教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA 関数】Mid関数の使い方がわからないです。教えて!

f:id:m_kbou:20200420121407p:plain

Mid関係の関数にはMid関数とMidB関数の2種類があります。このMid関数の使い方について紹介します。

 

 

構文

記述方法は以下の通りとなります。

(1)Mid関数の記述方法

Mid(”[文字列]”,[抜き出す先頭位置],[桁数])

[説明]:

指定した文字列の指定文字目から指定文字数分だけを抜き出します。

[文字列] 任意の文字列を記述します。
※「”」(ダブルクォーテーション)で囲みます。
[抜き出す先頭位置] [文字列]から抜き出す先頭文字の桁目を記述します。
[桁数] [抜き出す先頭位置]から抜き出す文字数を記述します。

[記述例]:

Mid("おはようございます。", 4, 2)

(2)MidB関数の記述方法

MidB(”[文字列]”,[抜き出す先頭位置],[バイト数])

[説明]:

指定した文字列の指定バイト目から指定バイト数分だけを抜き出します。

[文字列] 任意の文字列を記述します。
※「”」(ダブルクォーテーション)で囲みます。
[抜き出す先頭位置] [文字列]から抜き出す先頭文字のバイト目を記述します。
[桁数] [抜き出す先頭位置]から抜き出すバイト数を記述します。

[記述例]:

MidB("おはようございます。", 5, 2)

 

使い方

使い方について具体的に説明します。

Mid関数の使い方

Mid関数の使い方について説明します。

(1)基本的な使い方

基本的な使い方について説明します。

[プログラミング例]:

Sub サンプル()

  MsgBox Mid("おはようございます。", 4, 2)

End Sub

内容は、「”おはようございます。”の文字列で、先頭から数えて4桁目から2桁の文字を抽出し、MsgBoxで表示して下さい。」との意味になります。

f:id:m_kbou:20210217102133p:plain

※上記のプログラミング例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。

[実行例]:

①<実行>ボタンをクリックします。

f:id:m_kbou:20210227183437p:plain

②結果は以下の様に表示されます。指定した文字列「おはようございます。」の先頭から数えて4桁目から2桁の「うご」が抽出され表示されます。

f:id:m_kbou:20190529154645p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

基本的な使い方についての説明は以上です。

(2)ループ処理と組み合わせた使い方

以下画面の内容を元に、For~Next文と組み合わせた使い方について説明します。

[画面]:

f:id:m_kbou:20190529104044p:plain

[プログラミング例]:

Sub サンプル()

  '↓処理①
  Dim 行 As Double

  '↓処理②
  For 行 = 2 To 4
    Range("B" & 行) = Mid(Range("A" & 行), 4, 2)
  Next

End Sub

処理の流れは以下の通りとなります。

[処理①]:変数定義
Dimによる変数定義となります。

[処理②]:For~Next文の記述
For~Next文による繰り返し処理となります。[処理①]で指定した変数:行に2から4の値を順次セットし、処理を3回実行します。1回目の処理では行に2がセットされ、A2セルに入力されている文字列の先頭から数えて4桁目から2桁の文字を抽出しB2セルにセットします。2回目の処理では行に3がセットされ、A3セルに入力されている文字列の先頭から数えて4桁目から2桁の文字を抽出しB3セルにセットします。3回目の処理では行に4がセットされ、A4セルに入力されている文字列の先頭から数えて4桁目から2桁の文字を抽出しB4セルにセットします。

f:id:m_kbou:20210217102352p:plain

※上記のプログラミング例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。

[実行例]:

①<実行>ボタンをクリックします。

f:id:m_kbou:20190529104044p:plain 

②結果は以下の様に表示されます。A列2行目の文字列「おはようございます。」は先頭から数えて4桁目から2桁の文字である「うご」がB列2行目に、3行目の文字列「こんにちは。」は先頭から数えて4桁目から2桁の文字先頭から数えて4桁目から2桁の文字である「んは」がB列4行目に表示されます。

f:id:m_kbou:20190529154439p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

ループ処理と組み合わせた使い方についての説明は以上です。

 

MidB関数の使い方

MidB関数の使い方について説明します。

(1)基本的な使い方

基本的な使い方について説明します。

[プログラミング例]:

Sub サンプル()

  MsgBox MidB("おはようございます。", 5, 2)

End Sub

内容は、「”おはようございます。”の文字列で、先頭から数えて5バイト目から2バイトの文字を抽出し、MsgBoxで表示して下さい。」との意味になります。

f:id:m_kbou:20210217102516p:plain

※上記のプログラミング例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。

[実行例]:

①<実行>ボタンをクリックします。

f:id:m_kbou:20210227183955p:plain

②結果は以下の様に表示されます。指定した文字列「おはようございます。」の先頭から数えて5バイト目から2バイトの「よ」が抽出され表示されます。

f:id:m_kbou:20190529154508p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

基本的な使い方についての説明は以上です。

(2)ループ処理と組み合わせた使い方

以下画面の内容を元に、For~Next文と組み合わせた使い方について説明します。

[画面]:

f:id:m_kbou:20190529104044p:plain

[プログラミング例]:

Sub サンプル()

  '↓処理①
  Dim 行 As Double

  '↓処理②
  For 行 = 2 To 4
    Range("B" & 行) = MidB(Range("A" & 行), 5, 2)
  Next

End Sub

処理の流れは以下の通りとなります。

[処理①]:変数定義
Dimによる変数定義となります。

[処理②]:For~Next文の記述
For~Next文による繰り返し処理となります。[処理①]で指定した変数:行に2から4の値を順次セットし、処理を3回実行します。1回目の処理では行に2がセットされ、A2セルに入力されている文字列の先頭から数えて5バイト目から2バイトの文字を抽出しB2セルにセットします。2回目の処理では行に3がセットされ、A3セルに入力されている文字列の先頭から数えて5バイト目から2バイトの文字を抽出しB3セルにセットします。3回目の処理では行に4がセットされ、A4セルに入力されている文字列の先頭から数えて5バイト目から2バイトの文字を抽出しB4セルにセットします。

f:id:m_kbou:20210217102729p:plain

※上記のプログラミング例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。

[実行例]:

①<実行>ボタンをクリックします。

f:id:m_kbou:20190529104044p:plain 

②結果は以下の様に表示されます。A列2行目の文字列「おはようございます。」は先頭から数えて5バイト目から2バイトの文字である「よ」がB列2行目に、3行目の文字列「こんにちは。」は先頭から数えて5バイト目から2バイトの文字である「に」がB列3行目に、4行目の文字列「こんばんは。」は先頭から数えて5バイト目から2バイトの文字である「ば」がB列4行目に表示されます。

f:id:m_kbou:20190529154547p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

ループ処理と組み合わせた使い方についての説明は以上です。

 

プログラミング(サンプル)

プログラミング事例を紹介します。

www.osiete-excelvba.work

 

おわりに

今回はMid関数について説明をしました。類似の関数にはLeft関数Right関数Instr関数もありますので、合わせて覚えて下さい。