この記事を読むのに必要な時間は約 5 分です。
文字列を扱う、Mid関数の使い方です。
指定した文字列の中から、欲しいところを上手く抜き出すので、セルの値でもファイル内のデータでも、使いどころは意外と多いかもしれません。
構文と使用例を紹介します。
目次(リンク)
Mid関数の構文
構文:Mid(文字列, 開始位置, [長さ])
- 文字列 :Mid関数を使う対象の文字列
- 開始位置:抜き出す文字列の開始位置、1文字目を1とカウント
- [長さ] :省略可、抜き出す文字列の開始位置からの長さ
文字列のところには、直接ダブルクォーテーション「””」で文字列を囲んで入れてもしいですし、String型の変数やセルなどを指定できます。
開始位置は1文字目を1とカウントです。
関数によっては最初を0とカウントする場合もあるので、混同するかもしれませんのでご注意を。
長さのところは省略可能です。
省略した場合、開始位置から右端までを指定したことになります。
Mid関数の使用例
例えば、東京タワーの住所から港区以降を抜き出してみます。
住所:東京都港区芝公園4丁目2-8
1 |
Mid("東京都港区芝公園4丁目2−8",4) |
これをDebug.Printで実行してみると、4文字目の港区以降を取得されることが分かります。
Mid関数で操作したい文字列は全角だけとは限りません。
半角全角交じりなど、いろんなパターンを実行していきます。
Debug.Printで見てみる
このブログ(Website-Note)のURLから、Mid関数を使って一部分を取り出してみたいと思います。
実行結果はDebug.Printでイミディエイトウィンドウに表示します。
イミディエイトウィンドウに表示された内容が分かりづらそうなので、vbCrlfを使って間に1行分改行を入れました。
1 2 3 4 5 6 7 8 9 10 11 |
'ドメインより後ろのところを取得 Debug.Print "ドメインより後ろのところを取得" Debug.Print Mid("https://website-note.net/vba/how-to-use-cells-object/", 26, 28) & vbCrLf 'ドメインより後ろのところを取得、引数3つめを省略 Debug.Print "ドメインより後ろのところを取得、引数3つめを省略" Debug.Print Mid("https://website-note.net/vba/how-to-use-cells-object/", 26) & vbCrLf '全角半角混じり Debug.Print "全角半角混じり" Debug.Print Mid("【VBA入門】Cellsを使ってExcelのセルを操作する方法", 8, 16) |
実行結果は下図のイミディエイトウィンドウのところに表示されています。
全角と半角が混じっていても、どちらも同じように1文字ずつカウントされました。
セルの値を変更してみる
Debug.Printだけだと味気ないので、セルに入っている値を操作してみたいと思います。
C列に入っているURLから、ドメインより後ろの部分をD列に格納します。
単純にコピペしてドメインのところを置換すれば一瞬で終わる話ですが、Mid関数の使用例ということでご了承ください。
下のMacro1()を実行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
Sub Macro1() Dim i As Integer Dim lStart As Long Dim sUrl_dir As String Dim sUrl_domain As String Dim sUrl_Tmp As String sUrl_domain = "https://website-note.net/" '開始位置を取得 lStart = Len(sUrl_domain) + 1 For i = 1 To 20 sUrl_Tmp = Cells(i + 2, 3) 'ドメインより後ろのところを取得 sUrl_dir = Mid(sUrl_Tmp, lStart) Cells(i + 2, 4) = sUrl_dir Next i End Sub |
ドメインより後ろのところを取得できました。
VBAじゃなくて、シートで使うMid関数は?
Mid関数はシートで使うものもあります。
構文は、
MID(文字列, 開始位置, 文字数)
VBAのMid関数とほとんど同じです。
違いは3つ目の引数が省略できないこと。
文字列の最後まで取得したい場合は、文字数以上の数字が入っていれば問題ないので、1000など大きな数字を入れておきます。
先ほどのVBAと同じ文字列が表示されました。
まとめ:Mid関数の使い方
VBAでのMid関数の使い方や使用例、シートで使う関数について紹介しました。
LEFT関数やRIGHT関数と並んで、文字列操作の際はよく使います。
単品で使うこともあれば、InStr関数など他の関数と組み合わせて動的に欲しい部分だけ抜き出すようなやり方もあります。
組み合わせればできることの幅が広がるので、ぜひ覚えていってくださいね。
最後までお読みいただき、ありがとうございました。