ExcelのRIGHTB関数の使い方|右からバイト数で文字を抽出する
「RIGHT関数なら知っているけれど、RIGHTB関数って何が違うの?」と感じたことはありませんか。文字数ではなく バイト数 で末尾を取り出す RIGHTB 関数は、半角と全角が混ざった文字列を扱うときに本領を発揮する関数です。固定長フォーマットの末尾チェックデジット抽出や、商品コードのロット番号取得など、業務の現場では意外と出番の多い関数なんですよ。
この記事では、ExcelのRIGHTB関数の構文・RIGHT関数との違い・実務での使い分けまで、サンプルデータを交えながら詳しく紹介します。LENB関数との組み合わせや、よくあるエラーの対処法もまとめているので、最後まで読めば RIGHTB を自信を持って使えるようになりますよ。
ExcelのRIGHTB関数とは?基本構文と動作
ExcelのRIGHTB関数は、文字列の末尾から 指定したバイト数分 の文字を取り出す関数です。RIGHT関数が「文字数」で取り出すのに対し、RIGHTBは「バイト数」で取り出す点が大きな違いです。
構文
=RIGHTB(文字列, バイト数)
| 引数 | 必須/省略 | 説明 |
|---|---|---|
| 文字列 | 必須 | 抽出元の文字列、または文字列を返すセル参照 |
| バイト数 | 省略可 | 取り出すバイト数(整数)。省略時は1バイト |
バイト換算ルール
RIGHTB関数を使うときは、文字種ごとのバイト数を押さえておきましょう。
| 文字種 | バイト数 |
|---|---|
| 半角英数字(A〜Z、0〜9) | 1バイト |
| 半角カタカナ(ア〜ン) | 1バイト |
| 半角記号(!、?、@など) | 1バイト |
| 全角ひらがな・カタカナ | 2バイト |
| 漢字 | 2バイト |
| 全角記号・全角英数字 | 2バイト |
ざっくりと「半角=1バイト、全角=2バイト」と覚えておけば、日常業務ではほぼ困りません。
TIP: RIGHTB関数は、日本語のような 2バイト文字セット(DBCS)言語 を使う環境で意味を持つ関数です。Microsoftの公式ドキュメントによると、英語版Excelなど DBCS 非対応の環境では RIGHT関数と同じ挙動になります。日本語版Excelを使っている方は安心して使ってくださいね。
RIGHT関数とRIGHTB関数の違い
RIGHT関数とRIGHTB関数の違いは、たった1行の比較で一目瞭然です。同じ文字列「入門Excel」(全角2文字+半角5文字)で結果を比べてみましょう。
| 数式 | 結果 | 説明 |
|---|---|---|
=RIGHT("入門Excel", 5) | “Excel” | 末尾5 文字 を取得 |
=RIGHTB("入門Excel", 5) | “Excel” | 末尾5 バイト を取得(半角5文字) |
=RIGHT("入門Excel", 6) | “門Excel” | 末尾6文字を取得 |
=RIGHTB("入門Excel", 6) | 半角スペース + “Excel” | 末尾6バイト(”門”が半端で切れる) |
=RIGHTB("入門Excel", 7) | “門Excel” | 末尾7バイト(半角5+全角1=7) |
ポイントは、全角文字の途中で切れる位置を指定すると、半角スペースで埋められる という点です。これは RIGHTB が文字単位ではなくバイト単位で機械的にカウントしているためで、Microsoft の公式仕様にも明記されています。先頭側の処理である LEFTB と対称的に、末尾抽出時はスペースが先頭側に挿入される点に注意してください。
使い分けの判断基準
| こんなとき | 使う関数 |
|---|---|
| 「末尾◯文字を取りたい」と人間目線で考える | RIGHT |
| 「末尾◯バイトを取りたい」とシステム目線で考える | RIGHTB |
| 半角・全角が混在し、固定バイト幅のフォーマットを処理する | RIGHTB |
| 半角のみ・全角のみで構成された文字列 | どちらでも同じ結果 |
普段の業務でメール文や商品名から末尾の数文字を切り出すなら RIGHT で十分です。一方、銀行系の固定長レコードや、バイト数で末尾の制御コードが定義されているデータを扱うなら RIGHTB の出番。「文字数の世界」と「バイト数の世界」を切り替えて考える癖をつけておくと、データ処理で迷わなくなりますよ。
ExcelのRIGHTB関数の基本的な使い方
それではRIGHTB関数を実際に使ってみましょう。シンプルな例から段階的に見ていきます。
半角文字列から末尾を取り出す
セルA2に「PRODUCT-2026-A123」と入力し、末尾の「A123」(4バイト)を取り出してみます。
=RIGHTB(A2, 4)
結果は A123 になります。半角英数字なので 1文字=1バイト、RIGHT関数と同じ感覚で使えますね。
全角文字列から末尾を取り出す
セルA2に「営業部第一課」と入力し、末尾4バイト(=末尾2文字)を取り出します。
=RIGHTB(A2, 4)
結果は 一課 になります。全角文字は1文字=2バイトなので、4バイト指定で2文字分が取り出されます。
混在文字列から末尾を取り出す
セルA2に「契約書-A100」と入力し、末尾5バイトを取り出します。「契約書」は全角3文字(6バイト)、「-A100」は半角5文字(5バイト)で構成されています。
=RIGHTB(A2, 5)
結果は -A100 になります。末尾の半角5文字(ハイフン+A100)がちょうど5バイトだからですね。一方で末尾6バイトを指定すると…
=RIGHTB(A2, 6)
結果は -A100(先頭に半角スペース1つ + -A100)になります。半角5バイト+全角1バイトの計6バイトを取りたいわけですが、直前の文字「書」(全角=2バイト)のうち1バイト分しか取れないため、文字として成立せず半角スペースで埋められる仕組みです。
バイト数を省略した場合
第2引数を省略すると 1バイトとして扱われます。
=RIGHTB("Excel")
結果は l です。末尾1バイト=半角1文字なので、l が返ります。
実務での活用シーン3選
ここからは「現場で実際にRIGHTBが効く」具体的なシーンを3つ紹介します。
シーン1: 固定長レコードの末尾チェックデジット抽出
全銀協のフォーマットや EDI(電子データ交換)で扱われる固定長レコードでは、末尾の数バイトに制御コードやチェックデジットが格納されていることがよくあります。たとえば、各レコードが「データ部 + 末尾2バイトのチェックデジット」で構成されている場合、RIGHTB で末尾2バイトだけを切り出して検証用列に展開できます。
=RIGHTB(A2, 2)
A列にレコード全体(半角・全角混在)が入っていても、RIGHTBなら末尾の制御部分だけを正確に抜き出せるんですよ。
シーン2: ファイル拡張子の抽出
ファイル名から拡張子を取り出すケース。半角拡張子は通常 3〜4 文字(=3〜4バイト)なので、RIGHTBが活躍します。
=RIGHTB(A2, 4)
A2に「report_2026.xlsx」と入っていれば、結果は xlsx になります。ただし拡張子の長さは可変(jpg は3文字、xlsx は4文字、tiff は4文字、jpeg は4文字)なので、汎用的に拡張子を取り出すなら次のように FIND と組み合わせるのが安全です。
=RIGHTB(A2, LENB(A2) - FIND(".", A2))
「ファイル名全体のバイト数 − 最初のドット位置」で、拡張子部分のバイト数を求めて RIGHTB に渡します。半角ファイル名なら FIND で十分機能しますよ。
シーン3: 商品コード末尾のロット番号取得
「IT-PC-A001」のような半角ハイフン区切りの商品コードから、末尾のロット番号「A001」を取り出すケース。
=RIGHTB(A2, 4)
末尾4バイトで A001 が取れます。商品コードが全部半角で固定長なら、これだけで運用に乗せられますね。一方、商品名が「特注品-A001」のように全角混在で末尾だけが半角ロット番号という場合も、RIGHTB なら半角部分だけを正確に抜き出せます。
LENB関数との組み合わせ
RIGHTBの真価は、LENB関数との組み合わせ で発揮されます。LENB は文字列の総バイト数を返す関数で、これと組み合わせると動的なバイト幅切り出しが可能になります。
全角文字を除いた半角末尾を取り出す
「特注品-A001」のような文字列で、末尾の半角部分だけを取り出したい場合。半角部分のバイト数が固定(4バイト)なら、
=RIGHTB(A2, 4)
で十分ですが、半角部分の長さが可変なら、まず全角部分のバイト数を計算します。
=RIGHTB(A2, LENB(A2) - LEN(全角部分の文字数)*2)
実務的には、特定の区切り文字(ハイフン等)を起点に FIND/SEARCH を組み合わせて切り出すケースの方が多いでしょう。
LEFTB と組み合わせて二分割する
レコード全体を「データ部」と「末尾コード部」に二分割するパターン。末尾2バイトがコード、それ以外がデータ部だとすると、
データ部: =LEFTB(A2, LENB(A2) - 2)
コード部: =RIGHTB(A2, 2)
LEFTB と RIGHTB は対称ペアとして機能するので、「全体バイト数 − 末尾バイト数」で先頭側、RIGHTB で末尾側を取り出せばきれいに分割できます。固定長フォーマットを2列に展開する定番パターンとして覚えておくと便利ですよ。
条件分岐でレコード長を判定する
レコード長によって取り出し位置を変えたい場合は、IF と組み合わせます。
=IF(LENB(A2) >= 10, RIGHTB(A2, 5), RIGHTB(A2, 3))
「全体が10バイト以上なら末尾5バイト、それ未満なら末尾3バイト」という条件分岐です。バリエーションのあるデータを統一的に処理する際に役立ちますね。
RIGHTB関数を使うときの注意点
RIGHTBは便利な関数ですが、いくつか押さえておきたい注意点があります。
マルチバイト文字の途中で切れると半角スペースになる
すでに触れたとおり、全角文字の途中で切れるバイト数を指定すると、その部分は 半角スペース で埋められます。たとえば、
=RIGHTB("企画書", 3)
の結果は 書(先頭に半角スペース1つ+書)です。「画」の2バイトのうち1バイト分しか取れないため、文字として成立せず半角スペースに置き換わるわけですね。データを後続で利用する際に「先頭にスペースがあるからエラーになった」というトラブルの原因になりがちです。TRIM や CLEAN で前処理するか、そもそも切れない位置で抽出するのが安全策です。
文字化けや表示崩れに注意
WordファイルやWebからコピーした文字列には、見た目は半角でも実は全角の英数字が紛れ込んでいることがあります。RIGHTB はバイト数で機械的に切るため、想定外のバイト数になっていると結果がズレますよ。=LENB(A2) で総バイト数を確認してから RIGHTB を適用すると失敗しません。
DBCS環境でのみ意味がある
繰り返しになりますが、RIGHTB が RIGHT と異なる挙動をするのは DBCS(2バイト文字セット)言語環境 に限定されます。日本語版Excelでは問題なく動作しますが、海外の同僚と共有するファイルでは挙動が変わる可能性があるので留意してください。
第2引数に小数を渡した場合
第2引数のバイト数に小数を渡すと、Excelは自動で 整数部分のみ を採用します(切り捨て)。
=RIGHTB("Sample", 3.7)
の結果は ple で、3バイト分が取り出されます。意図せず小数値が入ってしまうと結果が変わるため、INT 関数などで明示的に整数化しておくと安全ですね。
よくあるエラーと対処法
RIGHTB関数で遭遇しやすいエラーと、その対処法をまとめました。
#VALUE! エラー
第2引数のバイト数に 負の数 を指定すると #VALUE! エラーになります。
=RIGHTB("Excel", -2) → #VALUE!
セル参照を使っている場合、参照先が誤って負の値になっていないか確認しましょう。MAX(0, バイト数) で下限を0に揃えるテクニックが使えますよ。
=RIGHTB(A2, MAX(0, B2))
結果が空文字(””)になる
第2引数に 0 を指定すると空文字が返ります。
=RIGHTB("Excel", 0) → ""
これはエラーではなく仕様です。LENB の計算結果が想定外に0になっていないか、上流の数式を見直してみてください。
期待した文字数より少ない結果になる
「末尾4文字を取りたいのに、3文字しか返ってこない…」というケース。これは取り出し対象に 全角文字が含まれている のが原因です。RIGHT関数なら末尾4文字、RIGHTB関数なら末尾4 バイト なので、全角2文字(=4バイト)しか取れません。
文字数で取りたいなら RIGHT、バイト数で取りたいなら RIGHTB を使う、という根本ルールに立ち返って関数を選び直しましょう。
#NAME? エラー
関数名のスペルミスです。RIGHTB を RIGTHB や RIGTB と打っていないか確認してください。Excelでは関数名の予測候補が出るので、Tabキーで補完すると入力ミスを防げますよ。
まとめ
ExcelのRIGHTB関数は、文字列の末尾から バイト数指定 で文字を取り出す関数です。RIGHT関数の「文字数版」に対する「バイト数版」と理解すると、使い分けがスッキリ整理できます。
- 構文:
=RIGHTB(文字列, バイト数) - 半角=1バイト、全角=2バイト が基本ルール
- 全角の途中で切れると 半角スペース で埋められる
- 固定長レコードの末尾チェックデジット・拡張子・ロット番号取得で活躍
- LENB関数・LEFTB関数 との組み合わせで二分割や動的切り出しが可能
- 第2引数が 負の数で #VALUE!、0で空文字、小数は切り捨て
普段は RIGHT 関数で間に合っていても、固定長データや半角全角混在のテキストを扱う場面では RIGHTB が一番手っ取り早い解決策になります。LEFTB との対称ペアで覚えておくと、データ整形の引き出しが一気に増えますよ。ぜひお手元のデータで試してみてください。
