MIDB関数 – バイト単位で文字列の一部を抽出する関数(全角対応)
1. 使い方と活用例
MIDB関数は、指定した文字列の中から、バイト数を基準にして文字列の一部を抽出する関数です。
特に、日本語などの全角文字(2バイト)と半角文字(1バイト)が混在するデータに対して有効です。
SJIS(Shift-JIS)エンコーディングを前提としたバイト数で処理されるため、全角文字が2バイトとして扱われます。
2. 基本の書式
=MIDB(text, start_num, num_bytes)
3. 引数の説明
- text – 必須。対象となる文字列。
- start_num – 必須。抽出を開始するバイト位置(1から開始)。
- num_bytes – 必須。抽出するバイト数。
4. 使用シーン
- 全角と半角が混在する文字列から、正確に一部を抜き出したい場合。
- レガシーシステムなど、バイト数が重要な文字列フォーマットを扱う場合。
- 郵便番号やコードなど、固定バイト位置に情報が埋め込まれたデータの処理。
5. 応用のポイント
MID関数が「文字数」ベースで動作するのに対し、MIDB関数は「バイト数」ベースで動作します。
たとえば、「Aあ」という文字列は、Shift-JISでは「A(1バイト)」+「あ(2バイト)」で計3バイトとなります。
このようなデータに対して正確に処理をしたい場合、MIDBの使用が有効です。
ただし、英語環境では全角が存在しないため、MID関数とMIDB関数の結果は同じになることがあります。
6. 具体例とその解説
セルA1に「AあBいC」という文字列があるとします。
この場合のバイト構成は以下の通りです(Shift-JIS想定):
A(1バイト)|あ(2バイト)|B(1バイト)|い(2バイト)|C(1バイト)=合計7バイト
=MIDB(A1, 2, 3)
この式は、2バイト目から3バイト分を抽出します。
2バイト目は「あ」の1バイト目、3バイト目は「あ」の2バイト目、4バイト目は「B」。
つまり、「あB」という結果が返ります。
7. 関連関数の紹介
- MID関数 – 文字数ベースで文字列の一部を抽出する関数
- LEFTB関数 – 先頭から指定バイト数分を抽出する関数
- RIGHTB関数 – 末尾から指定バイト数分を抽出する関数
- LENB関数 – 文字列のバイト数を返す関数(全角=2バイト、半角=1バイト)
- TEXT関数 – 指定フォーマットで文字列を整形する関数(文字列操作で併用)
8. まとめ
MIDB関数は、全角と半角が混在するデータにおいて、バイト数に基づいて文字列の一部を正確に抽出するための関数です。
日本語や多バイト文字の扱いが重要となる環境で特に有効で、MID関数との使い分けがポイントです。
バイト単位の処理が必要な帳票作成や旧システム連携などで役立ちます。
9. 対応バージョン
Excel 2003以降の日本語対応バージョンで使用可能です。
英語版や非日本語環境では、MID関数と同じ動作になる場合があります(全角2バイトの概念が存在しないため)。