- 作成日 : 2025年8月25日
MIDB関数の使い方:文字列抽出を効率的に行う方法
MIDB関数は、Excelで文字列の中から指定した位置にある文字を抽出する関数です。日本語などの全角文字を正確に扱うことができ、データ整理や文字列の処理に役立ちます。
本記事では、MIDB関数の基本的な使い方から実践的な応用方法、よくあるエラーの対処法まで詳しく解説します。
目次
MIDB関数とは
MIDB関数は「Mid Byte」の略で、文字列の指定した位置から指定した長さ分の文字を抽出する関数です。通常のMID関数と異なる点は、全角文字(日本語、中国語、韓国語など)を2バイト、半角文字を1バイトとして計算することです。
この特性により、日本語を含む文字列を扱う際に、より正確な文字抽出が可能になります。特にデータベースから取得した情報や、外部システムとの連携において、文字コードを考慮した処理が求められる場面でも対応しやすくなります。
MIDB関数の基本構文
=MIDB(文字列, 開始位置, 文字数)
- 文字列:抽出元となるテキストまたはセル参照
- 開始位置:抽出を開始する位置(バイト単位)
- 文字数:抽出する文字の長さ(バイト単位)
MIDB関数の基本的な使い方
半角文字の抽出
半角文字のみを扱う場合、MIDB関数とMID関数の動作は同じになります。
例: セルA1に「Excel2024」が入力されている場合
=MIDB(A1, 1, 5)
結果:「Excel」
この場合、開始位置1から5バイト分を抽出するため、半角文字5文字の「Excel」が取得されます。
全角文字の抽出
全角文字を含む文字列では、1文字が2バイトとして計算されます。
例: セルA1に「エクセル関数」が入力されている場合
=MIDB(A1, 1, 8)
結果:「エクセル」
全角文字の「エクセル」は4文字で、バイト数では8バイト(4文字×2バイト)となるため、8を指定します。
全角・半角混在文字列の処理
実際のデータでは、全角文字と半角文字が混在することが多くあります。
例: セルA1に「商品A001」が入力されている場合
=MIDB(A1, 1, 4)
結果:「商品」
「商品」は全角2文字で4バイト、「A001」は半角4文字で4バイトです。開始位置1から4バイトを抽出すると、全角文字の「商品」が取得されます。
MIDB関数の実用的な利用シーン
住所の分割処理
住所データを都道府県、市区町村、番地に分割する際に活用できます。
例:住所「東京都新宿区西新宿1-1-1」を分割
都道府県や市区町村は、末尾の文字(都/道/府/県、 市/区/町/村)の位置を求めてからMIDBで抽出すると汎用的に対応できます。
都道府県の抽出(汎用)
=MIDB(A1,1,
IFERROR(FINDB(“県”,A1),
IFERROR(FINDB(“府”,A1),
IFERROR(FINDB(“都”,A1), FINDB(“道”,A1)))) + 1)
(例「東京都新宿区西新宿1-1-1」→「東京都」)
市区町村の抽出(汎用)
=LET(t, A1,
p, IFERROR(FINDB(“県”,t), IFERROR(FINDB(“府”,t), IFERROR(FINDB(“都”,t), FINDB(“道”,t)))) + 1,
s, p + 1,
e, IFERROR(FINDB(“市”,t,s), IFERROR(FINDB(“区”,t,s), IFERROR(FINDB(“町”,t,s), FINDB(“村”,t,s)))),
MIDB(t, s, e – s + 2))
(例「東京都新宿区西新宿1-1-1」→「新宿区」)
※政令指定都市で「市に続いて区まで含めたい」場合は、上式のeを「区」があればその位置に更新する分岐を追加してください。
このように段階的に文字列を分割することで、住所の各要素を個別のセルに振り分けることができます。
商品コードの解析
商品コードから特定情報を抽出する処理にも適しています。
例:商品コード「CAT-A001-BL」から情報を抽出
カテゴリ部分の抽出:
=MIDB(A1, 1, 3)
結果:「CAT」
商品番号の抽出:
=MIDB(A1, 5, 4)
結果:「A001」
色コードの抽出:
=MIDB(A1, 10, 2)
結果:「BL」
データクレンジング
外部システムから取得したデータに含まれる不要な文字を除去する際にも使用されます。
例:データ「[重要]会議資料」から[重要]を除去
=MIDB(A1, 9, LENB(A1)-8)
この場合、「[重要]」は全角4文字=8バイトなので、9バイト目から残り(LENB(A1)-8バイト)を抽出することで、「会議資料」のみを取得できます。
MIDB関数の応用テクニック
他の関数との組み合わせ
MIDB関数は他の文字列関数と組み合わせることで、より複雑な処理が可能になります。
バイト単位で抽出(MIDB+SEARCHB)
=MIDB(A1, SEARCHB(“(”, A1)+2, SEARCHB(“)”, A1)-SEARCHB(“(”, A1)-2)
この数式は、「(」のバイト位置を求め、その2バイト後(直後)から「)」の直前までを抽出します。
文字単位で抽出(MID+SEARCH)
=MID(A1, SEARCH(“(”, A1)+1, SEARCH(“)”, A1)-SEARCH(“(”, A1)-1)
文字として扱う場合はこちらを使います。
LEN関数との組み合わせ
文字列の長さを動的に計算し、柔軟な抽出を行う方法です。
バイト単位で後半を抽出(MIDB+LENB)
=LET(b, LENB(A1), MIDB(A1, INT(b/2)+1, b-INT(b/2)))
バイト数を半分に分けて後半の“バイト列”を取得します(混在文字列では文字の途中で分割される可能性があります)。
文字単位で後半を抽出(MID+LEN)
=LET(n, LEN(A1), MID(A1, INT(n/2)+1, n-INT(n/2)))
“文字数”でちょうど半分以降を安全に取得したい場合はこちらを使います。
配列数式での活用
複数のセルに対して一度にMIDB関数を適用する場合、配列数式を使用することで効率的に処理できます。
例:A1:A10の各セルの先頭6バイト(=全角なら3文字相当)を抽出
=MIDB(A1:A10, 1, 6)
Microsoft 365/Excel 2021以降:Enterでスピル。
旧バージョン:出力範囲(例:B1:B10)を選択してから上式を入力し、Ctrl+Shift+Enterで確定。
※「最初の3文字」を取りたい場合はバイトではなく文字関数を用い、
=MID(A1:A10, 1, 3)
を使用します。
条件分岐との組み合わせ
IF関数と組み合わせることで、条件に応じて異なる抽出処理を行うことができます。
文字数で判定・抽出(10文字)
=IF(LEN(A1)>10, MID(A1, 1, 10), A1)
バイト数で判定・抽出(10バイト)
=IF(LENB(A1)>10, MIDB(A1, 1, 10), A1)
用途に応じて「文字」基準か「バイト」基準かを統一して使用してください。
MIDB関数でよくあるエラーと対策
#VALUE!エラー
このエラーは、引数に数値以外の値が指定された場合に発生します。
原因と対策:
文字列以外(数値)でもそのまま利用可能。
=MIDB(123, 1, 2) → “12”
※表示形式を固定したい場合のみTEXTを併用します。
=MIDB(TEXT(123, “000”), 1, 2) → “12”
空白セルを参照している場合:
=MIDB(A1, 1, 2) ※A1が空白 → “”(空文字)
必要に応じて表示制御をする場合:
=IF(A1=””, “”, MIDB(A1, 1, 2))
意図しない結果が表示される場合
全角文字と半角文字の混在により、想定と異なる結果になる場合があります。
問題例: 「商品ABC123」から「ABC」を抽出したい場合
=MIDB(A1, 3, 3) → “品A”(意図しない結果)
対策: 正確なバイト位置を計算します。「商品」は4バイト、「ABC」は3バイトなので:
=MIDB(A1, 5, 3) → “ABC”(正しい結果)
文字化けの発生
特定の文字コード環境で作成されたファイルを異なる環境で開いた際に、文字化けが発生することがあります。
- テキストファイル(CSV/TSV等)の入出力時に正しい文字コード(例:UTF-8、Shift-JIS)を指定する。Excelブック(.xlsx)は内部的にUnicodeのため、ブック自体の保存で文字コードを選ぶ必要はありません。(例:[データ]→[テキスト/CSVから]でエンコードを指定/[名前を付けて保存]で「CSV UTF-8(BOM付き)」を選択)
- データの入力元システムの文字コード設定を確認する
- 文字化け対策や表記ゆれの是正には次の関数を使います。
- 全角⇄半角の変換:JIS(半角→全角)、ASC(全角→半角)
- Unicodeコードポイントの取得/文字生成:UNICODE、UNICHAR(※CODE/CHARはコードページ依存で日本語には不向き)
- 不可視文字の除去:CLEANやTRIM、SUBSTITUTEの併用
例)全角スペース除去:=TRIM(SUBSTITUTE(A1, UNICHAR(12288), ” “))
パフォーマンスの問題
大量のデータに対してMIDB関数を使用する際、処理速度が低下することがあります。
- 計算モードを手動に設定し、必要な時のみ再計算を実行する
- 可能な限り参照範囲を限定する
- 複雑な数式は段階的に分割し、中間結果を別のセルに保存する
MIDB関数使用時の注意点
文字コードの理解
MIDB関数を効果的に使用するためには、文字コードの基本的な理解が必要です。日本語環境では、全角文字が2バイト、半角文字が1バイトとして扱われることを常に意識する必要があります。
他の文字列関数との使い分け
用途に応じて適切な関数を選択することが重要です。
- MID関数: 文字数ベースでの抽出(全角・半角を区別しない)
- MIDB関数: バイト数ベースでの抽出(全角・半角を区別する)
- LEFT/RIGHT関数: 文字列の先頭・末尾からの抽出
データの検証
抽出結果が期待通りであることを確認するため、定期的にサンプルデータでの検証を行うことを推奨します。特に外部データを扱う際は、データ形式の変更により予期しない結果が生じる可能性があります。
MIDB関数は文字コードを意識したデータ処理に最適
MIDB関数は、日本語を含む文字列処理において便利な機能として使われます。
基本的な文字抽出から複雑なデータ処理まで、幅広い場面で活用できます。全角文字と半角文字のバイト数の違いを理解し、他の関数と組み合わせることで、効率的なデータ処理が可能になります。エラーの原因を把握し、適切な対応を行えば、より安定した処理が可能になるでしょう。
この記事をお読みの方におすすめのガイド5選【部署別紹介】
最後に、この記事をお読みの方によく活用いただいている人気の資料・ガイドを紹介します。すべて無料ですので、ぜひお気軽にご活用ください。
経理担当者向け
①Excel関数集 32選まとめブック
経理担当者の方をはじめ、ビジネスパーソンが知っておきたい便利なExcel関数集を初級~上級までギュッと網羅。新人社員の研修用などにもお使いいただけます。Google スプレッドシートならではの関数もご紹介しています。
②勘定科目・仕訳辞典(税理士監修)
勘定科目・仕訳に関する基本知識、および各勘定科目の仕訳例を具体的かつ網羅的にまとめた、50ページを超えるガイドを無料で提供しております。お手元における保存版としてでだけでなく、従業員への印刷・配布用としてもぜひご活用ください。
人事労務担当者向け
①入社・退職・異動の手続きガイドブック
書類の回収・作成・提出など手間のかかる入社・退職・異動(昇給・昇格、転勤)の手続き。
最新の制度をもとに、よくある質問やチェックポイントを交えながら、各手続きに必要な情報をまとめた人気のガイドですす。
②社会保険・労働保険の手続きガイド
企業において社会保険および労働保険の加入・喪失手続きは必ず発生し、手続きを誤れば保険事故が発生した際に従業員が不利益を被る可能性があります。
各保険の基本的な手続き方法を入社・退職・異動のシーン別にギュッとまとめた分かりやすいガイドです。
総務・法務担当者向け
契約書ひな形まとめ30選
業務委託契約書や工事請負契約書…など各種契約書や、誓約書、念書・覚書、承諾書・通知書…など、使用頻度の高い30個のテンプレートをまとめた、無料で使えるひな形パックです。
※ 掲載している情報は記事更新時点のものです。
※本サイトは、法律的またはその他のアドバイスの提供を目的としたものではありません。当社は本サイトの記載内容(テンプレートを含む)の正確性、妥当性の確保に努めておりますが、ご利用にあたっては、個別の事情を適宜専門家にご相談いただくなど、ご自身の判断でご利用ください。
関連記事
スプレッドシートで画像をトリミングするには?PC・スマホ・iPadでの操作方法を完全解説
Googleスプレッドシートに挿入した画像の不要な部分を切り取りたい、サイズを調整したいという場面は多くあります。本記事では、スプレッドシートで画像をトリミングする具体的な手順を、PC版はもちろん、スマートフォンやiPadでの操作方法まで詳…
詳しくみるスプレッドシートのINDIRECT関数とは?動的参照の基本から応用テクニック、エラー対処まで完全解説
Googleスプレッドシート(Google Sheets)のINDIRECT関数は、文字列として記述されたセル参照を実際のセル参照に変換する関数で、動的なデータ参照を可能にします。本記事では、INDIRECT関数の基本構文と動作原理から、ド…
詳しくみるOR関数の使い方やIF関数との組み合わせ方をわかりやすく解説
スプレッドシートやExcelでデータを扱う際、条件に応じた処理を行うことは非常に重要です。その中で、OR関数は複数の条件のいずれかが真であるかを判定できる、便利な機能です。さらに、IF関数と組み合わせることで、より柔軟な条件設定が可能となり…
詳しくみるスプレッドシートの最大行数と最大列数はいくつ?容量制限を徹底解説
Googleスプレッドシート(以下、スプレッドシート)を使用する際、データの規模に応じた容量計画が重要になります。本記事では、スプレッドシートの最大行数と最大列数、そして実運用での容量管理について、初心者向けに詳しく解説します。大規模なデー…
詳しくみるスプレッドシートのQUERY関数とは?基本の使い方から実践的な利用シーンまで解説
Googleスプレッドシートで大量のデータを扱う際、必要な情報だけを抽出したり、条件に合わせて並び替えたりする作業は日常的に発生します。そんなときに強力な味方となるのがQUERY関数です。この関数を使いこなせれば、複雑なデータ処理も簡単に実…
詳しくみるスプレッドシートのピボットテーブルとは?作成・編集・更新手順とメリット・デメリット解説
大量のデータから意味のある情報を瞬時に抽出したい。そんな時はピボットテーブルが便利な機能です。売上分析、在庫管理、人事データの集計など、複雑なデータを多角的に分析できます。 本記事では、企業のバックオフィス担当者向けに、Googleスプレッ…
詳しくみる



