【関数・プロパティ設定をつかう】

1 文字列の左端から一部の文字列を取得

2 文字列の右端から一部の文字列を取得

3 文字列の指定位置から指定文字分の文字列を取得

4 三つの文字列取得関数をつかう

5 文字列の指定位置から1文字を取得

6 文字列の文字数を取得

7 文字列のループで1文字ずつ分解

文字列の指定位置から指定文字分の文字列を取得

パイさん

Excel VBA/マクロのMid関数を使うと、対象となる文字列の指定位置から指定した文字数分

 文字列を取り出すことができます。Mid関数の構文は、次のようになります。」

Img7_1_31

パイさん

Mid関数では、

 第1引数:Stringに対象となる文字列式

 第2引数:Startに指定位置

 第3引数:Lengthに取得したい文字数を入れると、

 戻り値として、対象となる文字列の指定位置から指定文字数分の文字列を取り出す

 ことができます。」


(1) 取り出した文字列

パイさん

『セルを思いのままに動かそう』という文字列の4文字目から、1文字分の文字列を取り出して

 セルA2に格納してみましょう。

 予め、次のようなExcelシートを用意します。」

Img7_1_12

ソンくん

「早速、Mid関数をつかってみます。

 『セルを思いのままに動かそう』の『4』文字目から『1』文字分の文字列を取り出して

 セルA2に格納するのだから、

 左辺には、戻り値としてRange("A2").Value

 右辺には、Mid関数

      第1引数:Stringに『”セルを思いのままに動かそう”』

      第2引数:Startに『4』

      第3引数:Lengthに『1』

      を当てはめれば良いのだから、

 Range("A2").Value = Mid("セルを思いのままに動かそう", 4, 1)

 これで良いのでしょうか。」

Sub Mid関数()

 Range("A2").Value = Mid("セルを思いのままに動かそう", 4, 1)

End Sub

パイさん

「それでは、そのマクロを実行してみましょう。」

Img7_1_33

ソンくん

「『セルを思いのままに動かそう』の『4』文字目から『1』文字分の文字列が取り出されて

 セルA2に『思』と書きこまれました。」

演習(1):『セルを思いのままに動かそう』という文字列の

     4文字目から2文字分の文字列を取り出してセルA2に格納

Sub Mid関数()

 Range("A2").Value = Mid("セルを思いのままに動かそう", 4, 2)

End Sub

 


(2) 対象文字列-取り出した文字列

パイさん

「先ほどは、Mid関数第1引数:Stringに直接対象となる文字列を当てはめてみましたが、

 今度は第1引数:Stringにセルの値を当てはめてみましょう。

 ExcelのセルA2から取得した文字列の4文字目から2文字分の文字列を取り出して

 セルB2に格納します。

 予め、次のようなExcelシートを用意します。」

Img7_1_34

ソンくん

「今度も、Mid関数をつかってみます。

 セルA2から取得した文字列の『4』文字目から『2』文字分の文字列を取り出して

 セルB2に格納するのだから、

 左辺には、戻り値としてRange("B2").Value

 右辺には、Mid関数

      第1引数:StringにRange("A2").Value

      第2引数:Startに『4』

      第3引数:Lengthに『2』

      を当てはめれば良いのだから、

 Range("B2").Value = Mid(Range("A2").Value, 4, 2)

 これで良いのでしょうか。」

Sub Mid関数_セル値_定数_定数()

 Range("B2").Value = Mid(Range("A2").Value, 4, 2)

End Sub

パイさん

「それでは、そのマクロを実行してみましょう。」

Img7_1_36

ソンくん

「『セルを思いのままに動かそう』の『4』文字目から『2』文字分の文字列が取り出されて

 セルB2に『思い』と書きこまれました。」

演習(2):セルA2から取得した文字列の

     4文字目から5文字分の文字列を取り出してセルB2に格納

Sub Mid関数_セル値_定数_定数()

 Range("B2").Value = Mid(Range("A2").Value, 4, 5)

End Sub

 


(3) 対象文字列-文字数を取り出す開始位置-取り出す文字数-取り出した文字列

パイさん

「今度は、Mid関数第2引数:Startと第3引数:Lengthにセルの値を当てはめてみましょう。

 セルA2から取得した文字列に対して、セルC2から取得した開始位置

 セルD2から取得した取り出す文字数分の文字列を取り出して

 セルE2に格納します。

 予め、次のようなExcelシートを用意します。」

Img7_1_37

ソンくん

「今度も、Mid関数をつかってみます。

 セルA2から取得した文字列に対して、セルC2から取得した開始位置

 セルD2から取得した取り出す文字数分の文字列を取り出して

 セルE2に格納するのだから、

 左辺には、戻り値としてRange("E2").Value

 右辺には、Mid関数

      第1引数:StringにRange("A2").Value

      第2引数:StartにRange("C2").Value

      第3引数:LengthにRange("D2").Value

      を当てはめれば良いのだから、

 Range("E2").Value = _

  Mid(Range("A2").Value, Range("C2").Value, Range("D2").Value)

 これで良いのでしょうか。」

Sub Mid関数_セル値_セル値_セル値()

 Range("E2").Value = _

  Mid(Range("A2").Value, Range("C2").Value, Range("D2").Value)

End Sub

パイさん

「それでは、そのマクロを実行してみましょう。」

Img7_1_39

ソンくん

「『セルを思いのままに動かそう』の『4』文字目から『5』文字分の文字列が取り出されて

 セルE2に『思いのまま』と書きこまれました。」


パイさん

「このように、Mid関数を使うと、

 対象となる文字列の指定位置から指定した文字数分の文字列を取り出すことができます。」