【2026年8月最新】Excelの文字列抽出、VBA Mid関数の使い方完全ガイド|Left・InStr関数との組み合わせとAI自動化

【2026年7月最新】Excelの文字列抽出、VBA Mid関数の使い方完全ガイド|Left・InStr関数との組み合わせとAI自動化

「Excelのセルに入っている文字列から、必要な部分だけを取り出したい」——伝票番号だけ、都道府県名だけ、メールアドレスのドメイン部分だけ。実務では毎日のようにこの手の作業が発生します。

VBAには、この「文字列の一部を抜き出す」処理に使うMid関数という命令があります。似た働きをするLeft関数や、文字の位置を調べるInStr関数と組み合わせることで、住所分割や伝票番号抽出といった定型作業を自動化できます。

この記事では、Mid関数の基本文法から、Left・InStrとの実践的な組み合わせ方、全角半角が混ざったときの注意点、よくあるエラーの直し方までを一気に解説します。さらに後半では、「そもそもVBAのコードを1行も書かずに、同じ処理をAIにやらせる」という2026年時点の選択肢についても、弊社(株式会社GENAI)の実運用データとあわせて紹介します。

AI鬼管理山崎 AI鬼管理山崎
VBAのMid関数は「文字列の指定した位置から、指定した文字数だけ切り取る」という、いわば文字列版の"はさみ"です。使い方さえ覚えれば、住所分割や伝票番号の抜き出しといった作業を一瞬で終わらせられます。
代表菅澤 代表菅澤
一方で「VBAを書ける人が退職したら誰も直せない」という相談も本当によく受けます。この記事では、まず正しいVBAの書き方をきちんと解説したうえで、後半でAIに任せる選択肢も紹介します。両方知っておいて、状況に応じて使い分けるのが一番現実的です。

この記事を最後まで読むと、次の7つが明確になります。

✔️Mid関数の基本文法と、開始位置・文字数の指定ルール
✔️Left関数・InStr関数と組み合わせた実践的な抜き出しパターン
✔️全角・半角が混在する文字列を扱うときの注意点
✔️Midステートメント(関数ではなく代入文としてのMid)との違い
✔️実行時エラーが出たときの原因の見つけ方と直し方
✔️業務でよくある抽出パターン7選とそれぞれの関数の組み合わせ
✔️VBAを書かずにAIに任せるという、もう一つの選択肢と実際の削減効果
Claude Code 完全解説セミナー|経営者・会社役員専用 1on1 60分 無料Claude Codeを経営に活かしたい方へ — AI鬼管理
📌 この記事の結論
【2026年8月最新】Excelの文字列抽出、VBA Mid関数の使い方完全ガイド|Left・InStr関数との組み合わせとAI自動化
VBAのMid関数・Left関数・InStr関数を使ったExcelの文字列抽出方法を実例つきで解説。全角半角混在への対処、エラー対処法、Midステートメントとの違いに加え、VBAを書かずにAIで自動化する方法まで紹介します。

01 Mid関数とは何か:文字列の一部を抜き出す基本 開始位置と文字数を指定して、文字列の中身を切り取る

Mid関数は、ある文字列の「何文字目から」「何文字分」を取り出すかを指定して、その部分だけを返してくれるVBAの組み込み関数です。Excelのワークシート関数にも同名のMID関数がありますが、ここではVBA(マクロ)側のMid関数を前提に解説します。

📚 用語解説

VBA (Visual Basic for Applications):Excel・Word・AccessなどMicrosoft Office製品に組み込まれているプログラミング言語。「マクロ」と呼ばれる自動処理を作るときに使います。Alt+F11でエディタが開き、コードを書いて実行することで、手作業を自動化できます。

1-1. Mid関数の基本文法

Mid関数の書き方は次の通りです。

要素内容省略
文字列抜き出し元になる文字列、またはセルの値を格納した変数不可
開始位置何文字目から抜き出すか(1文字目は"1"。0を指定するとエラーになる)不可
文字数開始位置から何文字分抜き出すか省略可(省略時は末尾まで抜き出す)

たとえば「Mid("GENAI-2026-0731", 7, 4)」と書くと、7文字目の「2」から4文字分、つまり「2026」が返ります。実際のコードでは次のように使います。

💡 コード例:伝票番号から年を抜き出す

Dim denpyo As String
denpyo = "GENAI-2026-0731"
Dim nen As String
nen = Mid(denpyo, 7, 4)
MsgBox nen '' 実行結果: 2026

変数 denpyo に入っている伝票番号のうち、7文字目から4文字分(年の部分)だけを nen という変数に取り出しています。

1-2. 開始位置に0を指定するとどうなるか

よくあるつまずきポイントとして、開始位置に0を指定してしまうケースがあります。Mid関数の開始位置は1文字目を「1」として数えるルールのため、0を渡すと「実行時エラー5:プロシージャの呼び出し、または引数が不正です」というエラーが発生します。InStr関数の結果(後述)をそのまま開始位置に渡すコードでは、この0エラーが特に起きやすいので注意が必要です。

1-3. 文字数を省略した場合の挙動

第3引数の「文字数」は省略可能です。省略すると、開始位置から文字列の末尾までがまるごと返されます。「後ろの文字数が可変で、決まった長さで切れない」というケースでは、この省略記法が便利です。

📚 用語解説

引数(ひきすう):関数やプロシージャに渡す「材料」のこと。Mid関数でいえば「文字列」「開始位置」「文字数」の3つが引数にあたります。エクセルの関数でいう「=SUM(A1:A10)」のA1:A10の部分と同じ役割です。

1-4. MidB関数との違い(結論:通常業務ではほぼ不要)

VBAにはMid関数のほかにMidB関数という、文字列を1文字単位ではなく「バイト単位」で処理する関数も存在します。かつて文字コードの扱いが複雑だった時代の名残で用意されている関数ですが、現在の一般的な業務用マクロでは、Mid関数だけで十分なケースがほとんどです。「MidBという名前を見た」という前提知識として押さえておく程度で問題ありません。

1-5. Left関数だけでも書けるケースとの使い分け

「先頭から◯文字だけ抜き出したい」という単純なケースであれば、Mid関数を使わずLeft関数だけで済ませることもできます。次のコードは、同じ結果をMid関数とLeft関数それぞれで書いた比較です。

💡 コード例:先頭3文字を抜き出す(MidとLeftの書き比べ)

Dim code As String
code = "ABC-12345"
'' Mid関数で書く場合
MsgBox Mid(code, 1, 3) '' 実行結果: ABC
'' Left関数で書く場合(開始位置の指定が不要でシンプル)
MsgBox Left(code, 3) '' 実行結果: ABC

「先頭から」という条件であれば、開始位置を毎回「1」と書く必要がないLeft関数の方がコードが短くなります。逆に「途中から」の場合はMid関数一択です。

この使い分けのルールはシンプルです。先頭からならLeft、途中からや末尾からの範囲指定が必要ならMid、末尾からの固定長ならRightを使う、と覚えておけば迷いません。

02 Left関数・InStr関数と組み合わせた実践パターン 「決まった位置」ではなく「区切り文字の位置」で抜き出す

Mid関数だけでも十分便利ですが、実務データは「開始位置が毎回同じ」とは限りません。氏名の長さも、住所の文字数も、商品ごとにバラバラです。そこで組み合わせて使うのがLeft関数InStr関数です。

📚 用語解説

Left関数:文字列の「先頭から」指定した文字数だけを抜き出す関数。書き方は「Left(文字列, 文字数)」。Mid関数と違い、開始位置の指定は不要(常に1文字目から数える)です。

📚 用語解説

InStr関数:ある文字列の中に、特定の文字(区切り文字など)が「何文字目にあるか」を調べる関数。書き方は「InStr(検索対象の文字列, 探したい文字)」。見つからない場合は0が返ります。

2-1. InStrで区切り位置を調べてからMidで抜き出す

「メールアドレスの@より前だけ取り出したい」「住所の都道府県だけ取り出したい」といった、区切り文字の位置が毎回違うデータを扱うときは、InStrで区切り位置を先に調べ、その結果をMidやLeftに渡すのが定番パターンです。

💡 コード例:メールアドレスのユーザー名部分を抜き出す

Dim mail As String
mail = "yamazaki@genai-ai.co.jp"
Dim pos As Integer
pos = InStr(mail, "@")
Dim userName As String
userName = Left(mail, pos - 1)
MsgBox userName '' 実行結果: yamazaki

InStrで「@」の位置を調べ、そこから1文字前までをLeftで抜き出しています。

同じ考え方で、@より後ろの「ドメイン部分」を取り出したい場合はMid関数を使います。InStrで見つけた「@」の位置に1を足した位置を開始位置として、Mid関数に渡せば、ドメイン部分だけを抜き出せます。

2-2. 都道府県名を抜き出す実践例

住所データから都道府県名だけを抜き出したいケースはよくありますが、「東京都」は3文字、「神奈川県」は4文字と、文字数が一定ではありません。この場合、InStrで「都」「道」「府」「県」のいずれかが最初に現れる位置を探し、そこまでをLeftで切り出す、という工夫が必要になります。

✔️「都」「道」「府」「県」それぞれの位置をInStrで調べる
✔️0(見つからない)以外の中で、最も文字位置が小さいものを採用する
✔️その位置までをLeft関数で抜き出す
✔️例外的な住所表記(海外住所や号数のみの表記など)は別途チェックする
⚠️ 都道府県抜き出しの落とし穴

「越谷市」のように「市」が先に来る、あるいは住所の途中に偶然「県」を含む文字列(施設名など)があるケースでは、単純なInStr判定だけでは誤爆することがあります。実務データで使う前に、必ず数十件〜数百件のサンプルでテストしてから本番運用に組み込んでください。

2-3. Right関数も覚えておくと便利

Left関数の逆で、文字列の末尾から指定文字数を抜き出すRight関数もあります。書き方は「Right(文字列, 文字数)」。拡張子を抜き出す、末尾の枝番だけ取り出す、といった場面で使います。

ここまでの「区切り文字の位置を調べてから切り出す」という一連の流れを図にすると、次のようになります。

①元の文字列
yamazaki@genai-ai.co.jp
②InStrで
区切り位置を検索

"@"の位置=9
③Mid/Leftで
切り出す

Left(文字列, 8)
④結果
yamazaki
代表菅澤 代表菅澤
このInStr→Mid(またはLeft/Right)という流れは、住所分割・伝票番号抽出・メールアドレス処理など、業務でのVBA文字列処理の8割を占める最頻出パターンです。まずこの型だけ覚えておけば、応用は効きます。

03 全角・半角が混在する文字列を扱う注意点 日本語データ特有のズレに気をつける

日本語の業務データでは、全角と半角の文字が同じ列に混在していることが珍しくありません。「株式会社ABC」のように、全角の日本語と半角のアルファベットが1つのセルに同居しているケースです。

📚 用語解説

全角・半角:同じ文字でも表示上の幅が異なる2種類の文字種。「A」(全角)と「A」(半角)、「1」(全角数字)と「1」(半角数字)はデータとしては別の文字として扱われます。見た目が似ていても、VBAの文字列比較では一致しません。

3-1. なぜ全角半角混在で結果がズレるのか

Mid関数・Left関数・InStr関数は、いずれも全角・半角を区別せず「1文字」を1文字としてカウントします(バイト数ではなく文字数ベース)。そのため、抜き出し自体が文字化けしたり途中で切れたりすることは基本的にありません。ただし、InStrで検索する文字が全角と半角で異なる場合、意図した位置が見つからずに0が返ってくるという形でズレが表面化します。

💡 全角半角の統一で防げるトラブルの例

「株式会社」の後ろに続くスペースが、あるデータでは全角スペース「 」、別のデータでは半角スペース「 」になっているケース。InStrで半角スペースだけを検索していると、全角スペースのデータでは0(見つからない)が返り、後続のMid処理でエラーになります。

3-2. 対処法:StrConv関数で事前に統一する

この手のズレを防ぐ定番の対処法は、文字列処理を始める前にStrConv関数で全角・半角を統一しておくことです。「StrConv(文字列, vbNarrow)」で全角を半角に、「StrConv(文字列, vbWide)」で半角を全角に変換できます。抜き出し処理の前に一度そろえておけば、区切り文字の検索漏れを防げます。

📚 用語解説

StrConv関数:文字列の変換(全角⇔半角、大文字⇔小文字、ひらがな⇔カタカナなど)を行うVBAの関数。文字列処理の前処理として、データの表記ゆれをそろえるときによく使われます。

代表菅澤 代表菅澤
全角半角の表記ゆれは、地味ですがVBAマクロが「動いたり動かなかったりする」最大の原因の一つです。データを渡してくる相手(他部署や取引先)によって表記のクセが違うので、必ず前処理でそろえる癖をつけておくと事故が減ります。
Claude Code 完全解説セミナー|経営者・会社役員専用 1on1 60分 無料Claude Codeを経営に活かしたい方へ — AI鬼管理

04 よくあるエラーとMidステートメントとの違い つまずきやすいポイントを先回りして解消する

Mid関数まわりでよく遭遇するエラーと、紛らわしい「Midステートメント」との違いを整理します。

4-1. よくある実行時エラー3つ

エラー番号・内容主な原因対処法
実行時エラー5(プロシージャの呼び出し、または引数が不正)Mid関数の開始位置に0や負の数を渡しているInStrの結果をそのまま開始位置に使わず、0のときの分岐処理を入れる
実行時エラー13(型が一致しません)数値が入るべき変数に文字列や空欄(Null)が渡っている変数の型宣言(Dim)を確認し、IsNumericなどで事前チェックする
意図しない空文字・想定と違う結果InStrが0(見つからない)を返しているのに気づかず後続処理を続けているInStrの戻り値が0かどうかを必ずIf文で判定してから次の処理に進む
⚠️ InStrの戻り値チェックは必須

InStr関数は「見つからない」場合にエラーではなく0を返します。これを確認せずにMidやLeftの引数へ渡すと、実行時エラーになるか、あるいはエラーにならずに意図しない中途半端な文字列が返ってきて、気づかないままデータが壊れることもあります。必ず「If InStr(...) > 0 Then」で分岐を入れてください。

4-2. Mid関数とMidステートメントは別物

紛らわしいのが、Mid関数(値を取り出す)とMidステートメント(値を代入する)の違いです。見た目はどちらも「Mid(...)」ですが、書く場所によって役割が変わります。

Mid関数Midステートメント
役割文字列の一部を「読み取って」返す文字列の一部を「別の文字に置き換える」
書き方の位置=の右側(値として使う)=の左側(代入先として使う)
文字列の長さ変化しない(元の文字列はそのまま)変化しない(置き換えるだけで長さは伸びない)
コード例kekka = Mid(moto, 3, 2)Mid(moto, 3, 2) = "AB"

Midステートメントは「元の文字列の3文字目から2文字分を、"AB"という文字に置き換える」という意味になります。文字列を丸ごと作り直すのではなく、指定した位置の文字だけをピンポイントで書き換えたいときに使う、少し特殊な用途の書き方です。業務マクロで頻繁に使う機能ではありませんが、「Midという名前が2つの意味で登場する」ことを知らないと、コードを読むときに混乱の原因になります。

📚 用語解説

ステートメント:VBAにおいて「値を返す関数」ではなく「何かを実行する命令文」のこと。Midステートメントのほか、代入や制御構文(If、For等)もステートメントの一種です。

AI鬼管理山崎 AI鬼管理山崎
エラーが出たときは、まず「InStrの戻り値が0になっていないか」「開始位置に0や負の数が渡っていないか」の2点を確認するだけで、原因の8割は特定できます。焦って全部書き直す前に、この2点をチェックする癖をつけてください。

05 【独自】現場でよくある文字列抽出パターン7選 「どの関数を組み合わせればいいか」を業務シーン別に整理

ここからは、実際の業務でよく発生する「文字列の一部を抜き出したい」というシーンを7つ集めて、それぞれどの関数を組み合わせればよいかを一覧にしました。自分の業務に近いものがあれば、そのまま応用できます。

業務シーン元データの例抜き出したい部分使う関数の組み合わせ
伝票番号から発行年を取得GENAI-2026-07312026(発行年)Mid(文字列, 7, 4)
メールアドレスのドメイン確認yamazaki@genai-ai.co.jpgenai-ai.co.jpInStrで@の位置を調べ、Midで後半を抽出
住所から都道府県だけ抽出東京都千代田区〇〇1-2-3東京都InStrで「都道府県」の位置を調べ、Leftで抽出
氏名から姓だけ抽出山崎 太郎山崎InStrでスペース位置を調べ、Leftで抽出
商品コードから型番の分類部分を抽出AB-1234-XLABLeft(文字列, 2)
日付文字列から年月だけ抽出2026年07月31日2026年07月Left(文字列, 8)
URLからページ末尾のスラッグを抽出https://example.com/blog/vba-guidevba-guideInStrRevで最後の/位置を調べ、Midで抽出

📚 用語解説

InStrRev関数:InStrと似ていますが、文字列を「後ろから」検索して、最後に見つかった位置を返す関数。URLの末尾のスラッグや、ファイルパスの拡張子を抜き出すときなど、「最後の区切り文字」を探したい場面で使います。

この表を作るときに意識したいのは、「区切り文字が1種類しかないか、複数あるか」という視点です。伝票番号や商品コードのように固定フォーマットのデータはMid・Leftだけで完結しますが、住所やURLのように区切り文字の位置が可変のデータはInStr系の関数と組み合わせる必要が出てきます。データを扱う前に、まずこの2パターンのどちらに当てはまるかを見極めるだけで、書くべきコードの方針がぐっと絞り込めます。

この一覧から分かる通り、実務の文字列抽出は「固定の位置から切る」(Mid・Left・Right)「区切り文字の位置を調べてから切る」(InStr・InStrRev+Mid/Left/Right)の、大きく2パターンの組み合わせでほぼカバーできます。

💡 社内マニュアル化のすすめ

このようなパターンをVBAのコードとして社内マニュアル化しておくと、担当者が変わっても同じ処理を再現しやすくなります。ただし、後述する通り「マニュアル化してもコードを読める人が限られる」という属人化の課題は残ります。

代表菅澤 代表菅澤
このパターン一覧を見て「業務のたびにこれを毎回書くのは正直しんどい」と感じた方も多いはずです。次の章では、まさにその手間そのものをなくす方法について、弊社の実データを交えて紹介します。

06 【独自データ】VBAを書かずにAIに任せるという選択肢 Mid・Left・InStrの組み合わせを、そもそも書かなくて済む方法

ここまでVBAでの正しい書き方を解説してきましたが、正直なところ「開始位置」「InStr」「エラー処理」といった専門用語を覚えるのが億劫だ、という方も多いはずです。実際、弊社(株式会社GENAI)に寄せられる相談でも、「VBAが書ける社員が辞めてマクロが誰にもメンテナンスできなくなった」という声は非常に多く聞きます。

2026年現在、この手の「文字列の一部を抜き出す」作業は、VBAのコードを1行も書かずにAI(Claude Code)に日本語で指示するだけで完結させることができます。「この列の伝票番号から年だけ抜き出して、隣の列に入れて」と話しかければ、AIが処理内容を組み立てて実行してくれる、というイメージです。

従来のVBA
構文を覚える

コードを書く

デバッグする
AIに任せる
日本語で
指示するだけ

6-1. VBAで自分で書く vs AIに任せる:比較

比較軸VBAで自分で書くAI(Claude Code)に任せる
学習コスト構文・関数名・エラーの意味を覚える必要あり日本語で伝えるだけ、構文の学習は不要
初回セットアップVBAエディタを開いてコード記述・デバッグチャットで「◯◯を抜き出して」と伝えるだけ
メンテナンスデータ形式が変わるたびコードを修正する必要あり都度AIに再指示すればよく、コード資産の管理が不要
属人化リスク書いた本人しか直せないことが多い誰でも自然言語で同じ処理を再現・引き継げる
向いている用途毎日同じ処理を大量・高速に反復する定型バッチ条件が毎回変わる非定型作業、非エンジニアの単発〜中頻度作業
🏆
VERDICT
Claude に軍配
「同じ処理を1日に何万件も高速反復する」用途を除けば、非エンジニアが単発〜中頻度で使う文字列抽出作業は、AIに任せた方が学習コスト・メンテナンスコストともに低い。

弊社ではClaude Max 20xプラン(月額$200・約30,000円)を全社契約し、経理・秘書業務・広告運用・記事制作まで幅広い業務にAIを組み込んで運用しています。中でも経理領域では、請求書のチェックや経費仕訳、会計ソフト(freee)との連携といった、まさに「決まったフォーマットの文字列から必要な部分を抜き出す」作業が多く、月40時間かかっていた作業が月5時間程度まで圧縮できている肌感です。

秘書業務でも同様の傾向があります。日報や議事録から日付・担当者名・案件番号といった定型項目を抜き出してスケジュールに転記する作業は、以前は1日あたり2時間ほどかかっていましたが、AIに任せるようになってからは1日15分程度まで圧縮できている肌感です。これらの数値はいずれも弊社の運用実績に基づく概算であり、業種や担当者のスキルによって変動する点はご留意ください。

📚 用語解説

Claude Code:Anthropicが提供するAIエージェント。チャットで日本語の指示を出すだけで、Excelファイルの読み込み・文字列の抜き出し・表への書き出しといった一連の作業を自律的に実行します。VBAのようにコードを書く必要はなく、非エンジニアでも直感的に使えるのが特徴です。

✔️「A列の住所から都道府県だけをB列に抜き出して」と伝えるだけで処理が完結する
✔️VBAのように「開始位置」「文字数」を自分で数える必要がない
✔️データ形式が変わっても、都度「今回はこういう形式で」と伝え直せば対応できる
✔️担当者が変わっても、過去の指示内容を見れば誰でも同じ処理を再現できる
AI鬼管理山崎 AI鬼管理山崎
VBAの知識自体が無駄になるわけではありません。「大量データを毎日決まった手順で高速処理したい」という用途では、今でもVBAのマクロに分があります。一方で、都度条件が変わる作業や、非エンジニアの担当者が多い部署では、AIに任せた方が結果的に速くて壊れにくい、というのが弊社の実感です。

「Maxプランは高そう」と感じる方もいるかもしれませんが、弊社の肌感では、複数業務を横断的にAIへ任せることで1名分の業務量(月間概算160時間相当)を分担して捌けている感覚があり、人件費換算で考えると投資回収は早い水準です(数値はあくまで弊社の運用実績に基づく概算です)。

VBAコードを書かずに、Excel業務をAIに任せてみませんか

文字列抽出だけでなく、集計・転記・ファイル整理まで、Excel周りの定型作業はAIに置き換えられるケースが数多くあります。
まずは無料相談で、御社のどの業務がAI化に向いているかを一緒に整理します。

代表菅澤 代表菅澤
「VBAが書ける人がいなくて困っている」「マクロが古くて誰も触れない」という状態のまま放置するより、まず1つの業務から試してみることをお勧めします。お気軽にご相談ください。

NEXT STEP

この記事の内容を、あなたのビジネスで
実践してみませんか?

AI鬼管理 — Claude Code導入支援トレーニング

AI活用を自社で回せるようになりたい方へ

AI鬼管理

Claude Code・Cowork導入支援から業務設計・社内浸透まで実践ベースで伴走。「自社で回せる組織」を90日で作る経営者向けトレーニング。

AIBPO by AI鬼管理 — 定型業務の丸ごと代行

業務を丸ごと任せたい方へ

AIBPO by AI鬼管理

請求処理・データ入力・問い合わせ対応などの定型業務を、AI×人の品質管理体制で丸ごと代行。いまのコストの50%目安で、日々は成果物を承認するだけ。

Claude Code 完全解説セミナー|経営者・会社役員専用 1on1 60分 無料Claude Codeを経営に活かしたい方へ — AI鬼管理

07 まとめ VBAの基本を押さえつつ、AIという選択肢も持っておく

この記事では、VBAのMid関数を中心に、Left関数・InStr関数との組み合わせ、全角半角混在時の注意点、よくあるエラーとMidステートメントとの違い、そして業務でよくある抽出パターン7選までを解説しました。最後にポイントを振り返ります。

✔️Mid関数は「Mid(文字列, 開始位置, [文字数])」で、開始位置は1から数える(0はエラー)
✔️Left・Right関数は「先頭・末尾から固定文字数」を抜き出すシンプルな関数
✔️InStr・InStrRevで区切り文字の位置を調べてから、Mid/Left/Rightに渡すのが定番パターン
✔️全角半角混在のデータはStrConv関数で事前に表記をそろえておくとトラブルを防げる
✔️InStrの戻り値が0(見つからない)のケースを必ずIf文でチェックする
✔️Mid関数(値の取得)とMidステートメント(値の置き換え)は別物
✔️定型・高頻度の大量処理はVBA、非定型・単発〜中頻度の処理はAIに任せる、という使い分けが現実的

VBAの知識は、Excel業務を深く理解するうえで今でも役立ちます。同時に、2026年現在は「そのコードを書く手間そのものをAIに任せる」という選択肢も現実的になっています。自社の業務がどちらに向いているか迷ったら、まずは1つの作業を試してみることから始めてください。

代表菅澤 代表菅澤
弊社では「AI鬼管理」というサービスで、Excel・VBA周りの業務自動化の設計から伴走まで支援しています。VBAを覚えるべきか、AIに任せるべきか迷っている方は、無料相談で具体的にお答えしますので、お気軽にどうぞ。

よくある質問

Q. Mid関数とLeft関数、どちらを使えばいいですか?

A. 文字列の「先頭から」固定の文字数を抜き出したいだけならLeft関数の方がシンプルです。一方、文字列の途中(例えば7文字目から)を抜き出したい場合はMid関数を使います。用途によって使い分けるのが基本で、迷ったら「先頭からか、途中からか」で判断してください。

Q. Mid関数の開始位置に0を指定するとどうなりますか?

A. 実行時エラー5「プロシージャの呼び出し、または引数が不正です」が発生します。Mid関数の開始位置は1文字目を「1」として数えるルールのため、0や負の数を渡すとエラーになります。InStr関数の戻り値をそのまま開始位置に渡すコードでは、見つからない場合に0が返るため、このエラーが起きやすいので事前チェックが必要です。

Q. 全角と半角が混在するデータでMid関数を使うと結果がズレますか?

A. Mid・Left・Right関数自体は全角半角を区別せず「1文字」として数えるため、抜き出し処理そのものが文字化けすることは基本的にありません。ただし、InStr関数で検索する区切り文字(スペースなど)が全角・半角で異なると、検索位置が見つからずズレが発生します。StrConv関数で事前に表記をそろえておくと安全です。

Q. MidステートメントとMid関数は何が違うのですか?

A. Mid関数は文字列の一部を「読み取って」値として返すのに対し、Midステートメントは「=」の左側に書くことで、指定した位置の文字を別の文字に「置き換える」という異なる役割を持ちます。文字列の長さは変わらず、指定範囲の文字だけがピンポイントで書き換わります。

Q. VBAを使わずにExcelの文字列抽出をAIにやらせることは実際に可能ですか?

A. 可能です。Claude CodeのようなAIエージェントに「A列の住所から都道府県だけをB列に抜き出して」と日本語で指示するだけで、VBAのコードを書かなくても同様の処理を実行できます。特に非エンジニアの担当者が多い部署や、都度条件が変わる非定型作業では、VBAを学ぶよりAIに任せる方が結果的に早いケースが多いです。

Q. VBAのスキルはAI時代に不要になりますか?

A. 完全に不要にはなりません。毎日同じ処理を大量かつ高速に繰り返す定型バッチ処理では、VBAのマクロに今でも分があります。一方で、条件が都度変わる作業や、コードを書ける人がいない部署の業務については、AIに任せた方が学習コスト・属人化リスクの両面で有利になるケースが増えています。

Q. InStr関数で複数の候補(例:都道府県の「都」「道」「府」「県」)を検索したいときはどうすればいいですか?

A. それぞれの文字についてInStrを個別に実行し、0以外の結果(見つかった位置)の中から最も小さい値を採用する、という比較処理を書くのが一般的です。この分岐が煩雑に感じる場合は、AIに「住所から都道府県名を抜き出して」と指示する方が、条件分岐を意識せずに済みます。

AIAI鬼管理

AI鬼管理/AIBPO by AI鬼管理へのお問い合わせ

この記事を読んで気になった方へ。
専門スタッフが、御社に最適な
業務自動化・業務代行プランを無料でご提案します。

サービスを選択してください

会社名を入力してください
業種を選択してください
お名前を入力してください
※法人・事業用のメールアドレスでお願いします(Gmail等の個人用フリーメールは受付できません)
正しいメールアドレスを入力してください

1つ以上選択してください
1つ以上選択してください
月額コストを選択してください

約1時間のオンライン面談(Google Meet)です

空き枠を取得中...
面談日時を選択してください

予約確定後、Google Calendarの招待メールをお届けします。
しつこい営業は一切ございません。

監修 最終更新日: 2026年8月13日
菅澤孝平
菅澤 孝平 株式会社GENAI 代表取締役
  • AI業務自動化サービス「AI鬼管理」を運営 — Claude Code を活用し、経営者の業務を「AIエージェントに任せる仕組み」へ転換するパーソナルトレーニングを 伴走構築 で提供。日報・採用・問い合わせ対応・経費精算・議事録・データ集計・営業リスト等の定型業務を、AIに代行させる体制を経営者と一緒に作り込む
  • Claude Code 実装ノウハウを 経営者・法人クライアント に直接指導。生成AIを「便利ツール」ではなく 「業務を任せる存在」 として運用する手法を体系化
  • 「やらせ切る管理」メソッドの開発者。シンゲキ株式会社(2021年設立・鬼管理専門塾運営)にて累計3,000名以上の学習者を志望校合格に導いた管理メソッドを、AI × 経営者支援 に転用
  • 著書『3カ月で志望大学に合格できる鬼管理』(幻冬舎)、『親の過干渉こそ、最強の大学受験対策である。』(講談社)
  • メディア出演: REAL VALUE / カンニング竹山のイチバン研究所 / ええじゃないかBiz 他
  • 明治大学政治経済学部卒
現在は AI鬼管理(Claude Code活用の伴走型パーソナルトレーニング)を主事業とし、経営者と二人三脚で「AIに業務を任せる仕組み」を実装。「実行を強制する環境」を AI で構築する手法を、自社の実運用知見をもとに発信している。