ExcelのREPLACEB関数の使い方|位置指定バイト置換
REPLACEB関数は、文字列の指定位置から指定バイト数分の文字を、別の文字列で置き換える関数です。半角と全角が混在するデータで「正しい位置」を指定するときに、文字数ではなくバイト数で動くため重宝します。
「REPLACE関数で半角カナ混在データを置換したら、位置がずれた」という経験はありませんか。本記事では、REPLACEB関数の構文・使い方・REPLACE関数との違いを実例付きで解説します。FINDB・SEARCHB関数と組み合わせた実用パターンも紹介します。
ExcelのREPLACEB関数とは?(読み方・基本機能)
REPLACEB関数の読み方と語源
REPLACEB関数(読み方:リプレイス・ビー)は、文字列の一部をバイト数指定で別の文字列に置き換える関数です。関数名は「REPLACE(置換)+ B(Byte:バイト)」に由来します。
Excelには文字数で操作する系統(REPLACE/LEFT/MID等)が用意されています。それとは別に、バイト数で操作する「Bシリーズ」(REPLACEB/LEFTB/MIDB等)もあります。本関数はその「Bシリーズ」の置換版です。
REPLACEB関数で何ができるか
REPLACEB関数の主な用途は次のとおりです。
- 半角・全角が混在する文字列の一部置換
- 半角カタカナを含むデータでの位置指定置換
- 商品コード・顧客IDなど固定バイト長フィールドの一部書き換え
- 個人情報のマスキング処理(電話番号の中央4桁を
****にする等) - 外部システム連携時のフィールド長調整
NOTE
REPLACEとREPLACEBはどちらを使う?
すべて半角だけ、またはすべて全角だけのデータならREPLACEで十分です。半角と全角が混在する、特に半角カナを含むデータではREPLACEBが必要になります。
REPLACEB関数の構文と引数
構文
=REPLACEB(文字列, 開始位置, バイト数, 置換文字列)
引数の詳細
| 引数 | 役割 | 必須 | 値の例 |
|---|---|---|---|
| 文字列 | 置換対象の元の文字列 | 必須 | “Excel関数” |
| 開始位置 | 置き換えを開始するバイト位置(1始まり) | 必須 | 1 |
| バイト数 | 置き換える長さ(バイト数) | 必須 | 5 |
| 置換文字列 | 置き換え後の新しい文字列 | 必須 | “Word” |
戻り値は置き換え後の文字列(テキスト型)です。
TIP
開始位置は「文字数ではなくバイト数」で数えます。日本語環境のExcelでは、半角=1バイト、全角=2バイト、半角カナ=1バイトとして処理されます。
REPLACEB関数の使い方(基本例)
例1: 半角文字列の途中を置換
半角文字列だけのデータでは、文字数とバイト数が一致するためREPLACEと同じ感覚で使えます。
=REPLACEB("Excel関数の使い方", 1, 5, "Word")
結果は "Word関数の使い方" です。先頭5バイト分(”Excel”)を "Word" に置き換えています。
例2: 全角文字列の途中を置換
全角文字は1文字=2バイトです。「商品マスタ」の先頭2文字(”商品”)を置き換えるなら、バイト数=4を指定します。
=REPLACEB("商品マスタ表", 1, 4, "顧客")
結果は "顧客マスタ表" です。バイト数=4で全角2文字分を指定している点がポイントです。
例3: 半角カナを含む文字列の置換
半角カナ「オオタ」は3バイト(1文字1バイト)です。「オオタ タロウ様」の先頭3バイト分を置換するなら次のように書きます。
=REPLACEB("オオタ タロウ様", 1, 3, "鈴木")
結果は "鈴木 タロウ様" です。半角カナをREPLACE関数で扱うときは「文字数で3」と指定します。REPLACEB関数では「バイト数で3」と指定し、たまたま同じ数値になりますが考え方は別物です。
NOTE
半角カナはShift_JISでは1バイトとしてカウントされます。「半角だから1バイト」と覚えておくと迷いません。
REPLACE関数とREPLACEB関数の違い
バイト数早見表
| 文字種 | 例 | バイト数 |
|---|---|---|
| 半角英数字 | A, 1, # | 1バイト |
| 半角カタカナ | ア, イ, ウ | 1バイト |
| 半角スペース | (空白) | 1バイト |
| 全角ひらがな | あ, い, う | 2バイト |
| 全角カタカナ | ア, イ, ウ | 2バイト |
| 全角漢字 | 漢, 字 | 2バイト |
| 全角英数字 | A, 1 | 2バイト |
| 全角スペース | 2バイト |
使い分けの判断基準
REPLACEとREPLACEBの動作を、同じ文字列で比較してみます。元データを "アイウ漢字" とし、4文字目(または対応するバイト位置)の「漢」を「国」に置き換える例です。
=REPLACE("アイウ漢字", 4, 1, "国")
結果は "アイウ国字" です。文字数で「4文字目から1文字」を置換しています。
=REPLACEB("アイウ漢字", 4, 2, "国")
結果は同じく "アイウ国字" です。バイト数では「4バイト目(半角カナ3バイト+1)から2バイト分」を指定します。
判断基準は次のとおりです。
- データがすべて半角、またはすべて全角 → REPLACE関数で十分
- 半角と全角が混在 → REPLACEB関数が安全
- 半角カナを含む → REPLACEB関数が確実
- 外部システムからバイト数で指示が来る → REPLACEB関数一択
TIP
迷ったらLENB関数で文字列の総バイト数を確認してから設計するとミスが減ります。LENBはREPLACEBと同じバイト基準で動作します。
FINDB・SEARCHBと組み合わせた実用例
REPLACEB関数の真価は、置換位置を動的に求めるFINDB関数・SEARCHB関数と組み合わせたときに発揮されます。
例1: 区切り文字を全角に統一
A1セルに "東京都-新宿区" が入っている前提で、最初のハイフン "-" を全角の "/" に置き換えます。
=REPLACEB(A1, FINDB("-", A1), 1, "/")
結果は "東京都/新宿区" です。FINDB関数が "-" のバイト位置を返し、REPLACEB関数がそこから1バイト分を置換します。
FINDB関数の詳細はExcelのFINDB関数の使い方を参照してください。
例2: ワイルドカード検索からの置換
ワイルドカードを使いたい場合はSEARCHB関数を組み合わせます。例として、A1の「数字+ハイフン」を全角ハイフンに置換します。
=REPLACEB(A1, SEARCHB("?-", A1), 2, "-")
A1が "商品1-A" なら、SEARCHB関数が "1-" の開始位置を返します。REPLACEB関数が2バイト分を "-" に置換します。
SEARCHB関数の詳細はExcelのSEARCHB関数の使い方を参照してください。
例3: 個人情報のマスキング
電話番号の中央部分を "****" でマスクするパターンです。
=REPLACEB("080-1234-5678", 5, 4, "****")
結果は "080-****-5678" です。固定位置の置換なのでFINDB関数は不要ですが、可変位置なら組み合わせると便利です。
REPLACEB関数のよくあるエラーと対処法
| エラー・症状 | 原因 | 対処法 |
|---|---|---|
#VALUE! エラー | 開始位置が0以下、バイト数が負の値 | 引数を1以上の整数に修正 |
| 文字化け(不完全な文字) | 全角文字のバイト境界以外を開始位置に指定 | LENB関数で境界を確認し、開始位置を全角文字の先頭に合わせる |
| 位置ずれ | 半角カナ混在データでREPLACEを使った | REPLACEBに切り替え、バイト数で指定し直す |
| 結果が空白だらけ | 全角文字のバイト数指定が不完全 | バイト数を全角文字の倍数(2,4,6…)にそろえる |
| 末尾に余分な文字が付く | 開始位置が文字列のバイト長を超えた | 末尾追加の動作。意図しない場合はLENBで長さを確認 |
NOTE
全角文字の途中(バイト境界以外)から置換を始めると、不完全な文字が半角スペースで埋められて表示されます。バイト位置を扱うときはLENB関数とFINDB関数で位置を確認するクセをつけると安全です。
まとめ
REPLACEB関数は、文字列の指定位置から指定バイト数分の文字を別の文字列に置き換える関数です。半角と全角が混在するデータ、特に半角カナを含むデータで「位置ずれ」を防ぐために役立ちます。
本記事のポイントを振り返ります。
- 構文は
=REPLACEB(文字列, 開始位置, バイト数, 置換文字列) - 半角=1バイト、全角=2バイト、半角カナ=1バイトで計算する
- すべて半角や全角のデータならREPLACEで十分。混在ならREPLACEB
- FINDB・SEARCHB関数と組み合わせると動的な位置指定置換ができる
- 全角文字のバイト境界以外を開始位置にすると文字化けするので注意
文字数指定のREPLACEと、バイト数指定のREPLACEBを使い分けてみてください。業務データのクレンジングや一括変換が格段に楽になります。FINDB・SEARCHB関数と組み合わせた応用パターンもぜひ取り入れてみてください。
