【ExcelVBA・マクロ】Mid関数の使い方|文字列の途中から指定範囲を取得する方法【コピペOK】

Mid関数の使い方 ExcelVBA

VBAで文字列を扱っていると、次のようなことはありませんか?

  • 文字列の途中を取り出したい
  • 特定の位置のデータを抽出したい
  • IDや日付を分解したい

このような場合は、Mid関数を使うことで解決できます。
文字列の途中から指定した文字数を取り出すことができる関数です。

この記事では、Mid関数の基本から実務での活用方法まで分かりやすく解説します。


スポンサーリンク
スポンサーリンク

この記事でできること

  • 文字列の途中を抽出できる
  • 文字列の分解ができる
  • 実務で使えるコードが分かる

基本:Mid関数の使い方

基本構文はこちらです。

Mid(文字列, 開始位置, [文字数])
  • 文字列 → 対象の文字列
  • 開始位置 → 何文字目から取得するか
  • 文字数 → 何文字取得するか(省略可)

例:

MsgBox Mid("ABCDE", 2, 3)

→ BCD


Mid関数の特徴

  • 途中から文字列を取得できる
  • 開始位置は「1」から
  • 文字数は省略可能

基本例

Dim str As String

str = "ExcelVBA"

MsgBox Mid(str, 6, 3)

→ VBA


文字数を省略した場合

開始位置から最後まで取得されます。

MsgBox Mid("ABCDE", 3)

→ CDE


セルの値から抽出する

Range("B1").Value = Mid(Range("A1").Value, 2, 3)

A1の2文字目から3文字を取得します。


日付データの分解(よく使う)

yyyymmdd形式の文字列から月を取得します。

Dim str As String

str = "20240101"

MsgBox Mid(str, 5, 2)

→ 01(月)


条件分岐で使う

Dim code As String

code = "A12345"

If Mid(code, 2, 1) = "1" Then
    MsgBox "条件一致"
End If

Left・Rightとの違い

関数内容
Left左から取得
Mid途中から取得
Right右から取得

Mid関数(代入型)の使い方(応用)

Midは文字列の一部を書き換えることもできます。

Dim str As String

str = "ABCDE"

Mid(str, 2, 2) = "XX"

MsgBox str

→ AXXDE

この使い方は少し応用ですが非常に便利です。


実務での活用例

  • コードの分解
  • 日付データの分割
  • 文字列の抽出処理
  • データ整形

特にデータ加工でよく使われます。


注意点

① 開始位置は1から

0ではなく1スタートです。

② 範囲外は空文字になる

Mid("ABC", 10, 2)  ' → ""

③ Nullに注意

Nullの場合はエラーになります。


安全な書き方(おすすめ)

Dim val As Variant

val = Range("A1").Value

If Not IsNull(val) Then
    MsgBox Mid(val, 2, 3)
End If

よくあるエラーと対処法

① 型が一致しません

Nullやエラー値の可能性があります。

② 思った文字が取得できない

開始位置や文字数を確認してください。

③ コードは正しいのにエラーになる

コピー時に全角文字や特殊文字が混ざることがあります。
その場合は該当行を手入力し直すと解決することがあります。


まとめ

  • Midは途中から文字列を取得する関数
  • 文字列分解の基本
  • Left・Rightとセットで覚える
  • データ加工で非常に重要

Mid関数を使いこなせるようになると、文字列処理の自由度が大きく向上します。
VBAでは頻出の関数なので、ぜひマスターしておきましょう。

スポンサーリンク
スポンサーリンク
ExcelVBA
いがぴをフォローする

コメント

タイトルとURLをコピーしました