文字列
RIGHT関数の使い方・読み方
読み方:RIGHT は「ライト」と読みます。(一般的な読み方です。公式に読み仮名の定めはありません)
RIGHTは、文字列の末尾から、指定した文字数だけ取り出す関数です。
このページの中身(25項目)
この記事の書式と対応環境の出どころ(2026-08-26 確認)
- Google スプレッドシート ヘルプ:公式の書式は
RIGHT(文字列, 文字数)
https://support.google.com/docs/answer/3094087 - Microsoft サポート:RIGHT 関数
https://support.microsoft.com/ja-jp/excel/functions/right-function
関数の仕様は追加・変更されることがあります。書式が合わないときは、上の公式ページで最新をご確認ください。
LEFT の逆向きで、「電話番号の下4桁」「ファイルの拡張子」といった切り出しに使います。ExcelとGoogleスプレッドシートで共通です。

書式
=RIGHT(文字列, [文字数])
文字数を省略すると1文字だけ返します。
基本の使い方
A1に ABC-1234 が入っているとします。
=RIGHT(A1, 4) → 1234

末尾から可変長で取り出す
末尾の取り出しは、文字数が固定でないことが多いのがLEFTとの違いです。
RIGHT は「末尾から何文字」しか指定できないため、全体の長さから、前半の長さを引くという計算が必要になります。
A1が ABC-1234 の場合、「-」より後ろを取り出すには次のように書きます。
=RIGHT(A1, LEN(A1) - FIND("-", A1))
LEN(A1)… 全体の文字数(8)FIND("-", A1)… 「-」の位置(4)- 8 − 4 = 4文字を末尾から取る →
1234
この形が実務での基本形になります。
区切りが無い場合に備えて包んでおくと安全です。
=IFERROR(RIGHT(A1, LEN(A1) - FIND("-", A1)), A1)
区切り文字が複数あるとき
FIND は最初に見つかった位置を返します。ファイルパスのように区切りが複数あると、期待通りになりません。
A1 = data/2026/report.csv
最後の区切りより後ろを取り出すには、区切り文字を一度別の文字に置き換える手法を使います。
=RIGHT(A1, LEN(A1) - FIND("|", SUBSTITUTE(A1, "/", "|", LEN(A1)-LEN(SUBSTITUTE(A1,"/","")))))
読みにくいので、REGEXEXTRACT を使うほうが実用的です。
=REGEXEXTRACT(A1, "([^/]+)$")
「最後の / より後ろ」という意味です。圧倒的に短く、意図も明確です。
実用例
拡張子を取り出す
=REGEXEXTRACT(A1, "\.([^.]+)$")
RIGHT で書くこともできますが、拡張子の長さが可変なので正規表現のほうが確実です。
電話番号の下4桁
=RIGHT(A1, 4)
これは固定長なので RIGHT が最適です。
郵便番号の下4桁
=RIGHT(A1, 4)
ハイフンが入っている場合(123-4567)もそのまま動きます。
括弧の中身を取り出す
=REGEXEXTRACT(A1, "\((.+)\)")
全角・半角の数え方
RIGHTは全角も半角も1文字として数えます
バイト単位なら RIGHTB ですが、実務で必要な場面は限られます。
日付・数値に使うとき
日付にRIGHTを使うと、内部のシリアル値の末尾が返ります。日付から日を取り出したいなら DAY か TEXT を使ってください。
=DAY(A1)
=TEXT(A1, "d")
数値に使った場合も、結果は文字列になります。計算に使うなら VALUE で戻してください。
ゼロ埋めが必要な数値(0042 のような伝票番号)は、RIGHTで取り出すと先頭の0が消えていることがあります。元データが数値なら TEXT でゼロ埋めしてから取り出してください。
=RIGHT(TEXT(A1, "000000"), 4)
全行に適用する
=ARRAYFORMULA(IF(A2:A="", "", RIGHT(A2:A, 4)))
可変長の場合も同様に包めます。
=ARRAYFORMULA(IF(A2:A="", "", RIGHT(A2:A, LEN(A2:A) - FIND("-", A2:A))))
エラーの対処
#VALUE! が出る
FINDが対象を見つけられていない- 文字数にマイナスを指定している
IFERROR で包むか、FIND 単体の結果を確認してください。
想定と違う位置で切れる
末尾に見えない文字(改行・スペース)が付いている可能性があります。LEN() で確認し、TRIM で整えてください。
=RIGHT(TRIM(A1), 4)
CSVから読み込んだデータでは、末尾の空白や改行が残っていることがよくあります。
末尾を取り出すときの典型的な用途
末尾から文字を取り出す処理は、先頭からの取り出しとは使い道が違います。実務でよく出てくるのは、次のような場面です。
ファイル名から拡張子を取り出す。日付を含むコードから年月部分を取り出す。金額の文字列から通貨単位を除く。電話番号の下四桁を取り出す。いずれも、末尾側の桁数が決まっている場合です。
固定の桁数であれば、そのまま指定すれば済みます。問題になるのは、前半の桁数が可変で、末尾の要素を取り出したい場合です。「東京都-新宿区-西新宿」から最後の要素を取り出したい、というような要求です。
この場合、末尾から何文字かは行によって違います。したがって、最後の区切り文字の位置を求め、そこから末尾までの文字数を計算する必要があります。全体の文字数から、最後の区切りの位置を引く形です。
最後の区切りの位置を求めるのが、この処理の難所です。区切り文字が複数ある場合、単純な検索では最初の位置しか返りません。
最後の区切りの位置を求める技法
区切り文字が複数ある文字列から、最後の区切りの位置を求める方法があります。少し技巧的ですが、覚えておくと応用が利きます。
考え方はこうです。まず、その文字列に区切り文字が何個含まれているかを数えます。区切り文字を空文字に置き換えた場合の文字数と、元の文字数を比べれば、個数が分かります。
次に、置換の関数で「何番目を置き換えるか」を指定できる性質を使い、最後の一個だけを特殊な文字に置き換えます。この特殊な文字は、元のデータに絶対に含まれないものを選びます。
最後に、その特殊な文字の位置を検索します。これが最後の区切りの位置です。
この位置が分かれば、そこから末尾までを取り出すのも、そこまでを取り出すのも自由にできます。ファイル名から拡張子を除いた部分、階層コードの末端要素、住所の建物名。いずれもこの方法で取れます。
数式は長くなるので、作業列に分けて段階的に処理するほうが読みやすくなります。個数を数える列、位置を求める列、切り出す列、というように分ければ、途中でどこが間違っているかも分かります。
数値を扱うときの注意
末尾から桁を取り出す用途では、数値を対象にすることがよくあります。ここに落とし穴があります。
数値をそのまま対象にすると、内部の表現が使われます。表示形式で桁区切りを入れていても、内部にはカンマは含まれていません。表示上は「1,234,567」でも、切り出しの対象は「1234567」です。表示どおりに切り出したい場合は、先に文字列へ変換する必要があります。
日付も同様です。日付は内部的には連続した数値なので、そのまま末尾を取り出しても意味のある結果になりません。年月日として扱いたい場合は、文字列に変換してから切り出すか、年や月を取り出す専用の関数を使ってください。
小数を含む数値も注意が必要です。表示上は丸められていても、内部には元の桁数が残っています。切り出すと、表示されていない桁が出てきます。
これらを避けるには、切り出しの前に必ず文字列へ変換し、望む形式を明示的に指定するのが確実です。→ TEXT関数の使い方
取り出した後の型を決める
末尾から取り出した結果も、先頭からの場合と同じく文字列になります。
電話番号の下四桁のように、コードとして扱うなら文字列のままで構いません。先頭のゼロも保たれます。
一方、金額の一部を取り出して計算に使う場合は、数値に変換する必要があります。変換を忘れると、集計に含まれない、検索で一致しない、といった問題が起こります。
型の不一致は、エラーにならずに静かに間違うため、発見が遅れます。切り出しを含む作業列を作ったら、必ず数値として扱われているかを確認してください。件数を数える関数で、数値だけを数えた結果と全体の件数を比べれば、一目で分かります。
末尾の情報をどう持つか
コードの末尾に意味を持たせる設計は広く使われています。年度、枝番、区分、チェックディジット。いずれも末尾に置かれることが多い要素です。
末尾に置く利点は、桁数が固定されていれば取り出しやすいことです。前半の桁数が可変でも、末尾の桁数さえ固定なら、単純に切り出せます。
一方で、末尾に複数の要素を詰め込むと扱いにくくなります。年度二桁と枝番二桁が続いていると、それぞれを取り出すのに位置の計算が必要です。この場合は、区切り文字を入れるか、列を分けて持つほうが確実です。
チェックディジットのように、他の桁から計算される値を末尾に置く場合は、検算に使えます。取り込んだデータの末尾を計算し直して、一致するかを確認すれば、入力ミスや転記ミスを検出できます。
新しくコードを設計する立場なら、末尾に何を置くかを意識してください。頻繁に取り出す要素を末尾に置けば、処理が単純になります。
取り出しの処理を作業列にまとめる
切り出しの処理は、数式の中に埋め込まず、作業列にまとめるのが基本です。
数式の中で毎回切り出していると、同じ処理が複数箇所に散らばります。仕様が変わったときに、すべてを直し回ることになります。切り出しの位置がずれていることに気づいても、どこを直せばよいか分かりません。
作業列にまとめておけば、切り出しの処理は一箇所です。以降の数式は、その列を参照するだけになります。読みやすく、修正も容易です。
作業列は非表示にできるので、表の見た目を損ないません。印刷にも影響しません。
列が増えることを嫌う人もいますが、数式が複雑になるコストのほうがはるかに大きくなります。特に、他人が触るファイルでは、作業列に分けておくほうが親切です。
もうひとつの利点として、途中の値が見えることがあります。結果がおかしいときに、どの段階で間違っているかを目で確認できます。一本の長い数式では、この確認ができません。
作業列には、何をしている列なのかを見出しに書いてください。「コード前半」「年度」「区分」。見出しがあるだけで、理解の速度が変わります。
「文字列」の関数を全体から見る
文字列に含まれる関数を、全体から見ておきます。同じカテゴリの関数は、つまずく場所も似ています。この記事のほかに31本あります。
| 記事 |
|---|
| CHAR |
| CLEAN |
| CODE |
| CONCAT |
| CONCATENATE |
| EXACT |
| FIND |
| FIXED |
| HYPERLINK |
| IMAGE |
| JIS |
| LEFT |
| LEN |
| LENB |
| LOWER |
| MID |
| NUMBERVALUE |
| PROPER |
| REGEXEXTRACT |
| REGEXMATCH |
| REGEXREPLACE |
| REPLACE |
| REPT |
| SEARCH |
| SPLIT |
| SUBSTITUTE |
| TEXT |
| TEXTJOIN |
| TRIM |
| UPPER |
| VALUE |
このカテゴリで共通するつまずき
全角と半角、前後の空白、改行。この3つが原因のほとんどです。1つで理解した内容は、同じカテゴリの他の関数にもそのまま使えます。
どれを使うかの決め方
位置で取るのか、記号を目印に取るのかで使う関数が変わります。関数の一覧を眺めて選ぼうとすると、どれも当てはまるように見えて決まりません。
迷ったときは
→ 全関数の一覧 に目的別の索引があります。
数式を書く前の手順
手順を分けると、どこで詰まっているかが分かります。
1. 出したい結果を一文で書く
「何を、どの条件で、どんな形で出したいか」。この一文が書ければ、関数はほぼ決まります。書けないなら、まだ要件が固まっていません。
2. 元データの型を確認する
全角と半角、前後の空白、改行。この3つが原因のほとんどです。=ISNUMBER(A2) で数値かどうかを確認できます。見た目が同じでも、数値と文字列は別物です。
3. 空欄と0の扱いを決める
未入力なのか、実績が0なのか。表の意味が変わります。どちらとして扱うかを決めてから書いてください。
4. 条件の数を数える
位置で取るのか、記号を目印に取るのかで使う関数が変わります。将来条件が増える可能性があるなら、最初から複数条件に対応する形にしてください。
5. 共有先の環境を確認する
新しい関数は、古い環境で開くとエラーになります。社外に渡すファイルでは、この一点で選択肢が変わります。
6. 1行だけ書いて確認する
全行にコピーする前に、1行分の結果が正しいかを見てください。間違ったまま広げると、直す手間が増えます。
どの関数でも共通する確認
以下は、どの関数を使っていても同じです。
参照を固定したか
下方向にコピーする数式では、動いてはいけない参照を固定します。上の数行だけ見て判断しないでください。ずれは下のほうで表面化します。
範囲の行数が揃っているか
複数の範囲を渡す関数では、行数がずれると結果が狂います。エラーにならず値が返るため、気づきにくい種類の間違いです。
型が揃っているか
=ISNUMBER(A2)
数値として入っているかを判定します。システムから書き出したデータでは、これが原因のことが多くあります。
前後に空白が入っていないか
=LEN(A2)&" / "&LEN(TRIM(A2))
数が違えば、余分な空白が入っています。見た目では判別できません。
別の方法で検算したか
同じ数字を別の関数でも出して、突き合わせてください。1つの結果だけを見ても、正しいかどうかは判断できません。
最終行まで確認したか
一番下までスクロールして、結果を見てください。途中から値が変わっていないかを確認します。
引き継ぐときに残すこと
数式は動いていても、意図は残りません。渡す前に、次の点をシート内にメモしてください。3分で終わります。
何を出している数式か
一行で構いません。読めば分かると思っても、数か月後の自分には分かりません。
どの表を参照しているか
参照先のシート名と、更新の担当。別ファイルなら、その場所も書いてください。
該当しないときの扱い
空欄にしているのか、文言を出しているのか、エラーのまま残しているのか。書いていないと、受け取った側は空欄をデータなしと読みます。
触ってはいけない場所
列を挿入すると壊れる数式がある場合、必ず書き残してください。この一行があるだけで、引き継ぎ後の事故が大きく減ります。
使った関数の対応環境
新しい関数を使っている場合、古い環境では開けません。共有の範囲が広がる可能性があるなら、明記してください。
確定した期間は値にする
締めた月の集計は、値貼り付けにしてください。参照元を消しても壊れなくなり、ファイルも軽くなります。
このサイトの収録状況
全201本を、次のカテゴリに分けて収録しています。
| カテゴリ | 記事数 |
|---|---|
| 目的別 | 51本 |
| 集計 | 47本 |
| 文字列 | 31本 ←この記事 |
| 日付 | 19本 |
| 検索・参照 | 15本 |
| 条件 | 15本 |
| 機能 | 12本 |
| 配列・抽出 | 10本 |
| 関数一覧 | 1本 |
探し方の順番
関数名が分かっているなら検索窓から。やりたいことだけ決まっているなら「目的別」から。近い関数を比べたいなら、同じカテゴリの一覧から入ってください。
記事の構成
どの記事も、書式・実例・つまずきやすいところ・似た関数との使い分けを同じ順番で並べています。1本読めば、他の記事も同じ場所を探せます。
よくある質問
Q. 指定した文字数より短い場合は
エラーにはならず、全体が返ります。
Q. 文字数を省略するとどうなりますか
一文字だけが返ります。
Q. 数値の桁区切りが反映されません
内部の値が対象になります。表示どおりに切り出したいなら、先に文字列へ変換してください。
Q. 日付の末尾を取ると変な数字になります
日付は内部的に連続した数値です。年月日として扱うには、文字列に変換するか専用の関数を使ってください。
Q. 最後の区切り以降を取りたいのですが
区切りの個数を数え、最後の一個を特殊な文字に置換してから位置を検索する方法があります。
Q. 全角文字が正しく取れません
数え方の種類を確認してください。全角を二として数える版と混在していると、位置がずれます。
Q. 前後の空白が邪魔をします
先に空白を落としてください。全角の空白は別の処理が必要です。
Q. 中間部分を取りたいのですが
開始位置と文字数を指定する関数があります。→ MID関数の使い方
まとめ
- 書式は
=RIGHT(文字列, 文字数) - 可変長なら
LEN(A1) - FIND(...)で文字数を計算する - 区切り文字が複数あるなら REGEXEXTRACT が圧倒的に短い
- 全角も半角も1文字として数える
- 末尾の見えない空白に注意。
TRIMで整える - ゼロ埋めが要る数値は TEXT を先に通す
関連する関数
- LEFT — 先頭から取り出す
- MID — 途中から取り出す
- REGEXEXTRACT — 正規表現で取り出す
- SPLIT — 区切り文字で分割する
- 関数一覧に戻る
RIGHT でエラーが出たときの読み方
RIGHT も、返るエラーはほぼ #VALUE! です。
LEFT と同じ原因に加えて、RIGHT 特有のつまずきが1つあります。
末尾に見えない文字が付いている
=RIGHT(A2,3) で末尾3文字を取ったつもりが、
実際には空白や改行を含んでいることがあります。
末尾は目で見て気づけないので、=CODE(RIGHT(A2,1)) で確かめます。
32なら半角スペース、10なら改行、160ならノーブレークスペースです。
=RIGHT(TRIM(CLEAN(A2)),3) のように、先に落としてから取り出してください。
2つ目の引数が数値でない
取り出す文字数を別のセルから受け取っている場合、
そのセルが文字列だと #VALUE! になります。
ISNUMBER で確かめられます。
結果が文字列であることを忘れている
電話番号の下4桁、伝票番号の枝番などを RIGHT で取り出すと、
先頭が0でも消えません。文字列だからです。
そのまま計算に使うと #VALUE! になるので、
比較するなら両側とも文字列に揃えてください。
詳しい探し方は #VALUE!エラーの直し方 にあります。
右から探して切り出す
「最後のハイフンより後ろ」を取りたい、という場面はよくあります。 RIGHT だけでは位置が分からないので、文字数から逆算します。
=RIGHT(A2,LEN(A2)-FIND("#",SUBSTITUTE(A2,"-","#",LEN(A2)-LEN(SUBSTITUTE(A2,"-","")))))
ハイフンの個数を数え、最後の1つだけを別の記号に置き換えてから位置を探しています。 SUBSTITUTE の4つ目の引数が「何番目を置き換えるか」です。