【関数・プロパティ設定をつかう】
1 文字列の左端から一部の文字列を取得
2 文字列の右端から一部の文字列を取得
3 文字列の指定位置から指定文字分の文字列を取得
4 三つの文字列取得関数をつかう
5 文字列の指定位置から1文字を取得
6 文字列の文字数を取得
7 文字列のループで1文字ずつ分解
文字列の指定位置から指定文字分の文字列を取得
パイさん
「Excel VBA/マクロのMid関数を使うと、対象となる文字列の指定位置から指定した文字数分の
文字列を取り出すことができます。Mid関数の構文は、次のようになります。」
パイさん
「Mid関数では、
第1引数:Stringに対象となる文字列式、
第2引数:Startに指定位置、
第3引数:Lengthに取得したい文字数を入れると、
戻り値として、対象となる文字列の指定位置から指定文字数分の文字列を取り出す
ことができます。」
(1) 取り出した文字列
パイさん
「『セルを思いのままに動かそう』という文字列の4文字目から、1文字分の文字列を取り出して
セルA2に格納してみましょう。
予め、次のようなExcelシートを用意します。」
ソンくん
「早速、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
パイさん
「それでは、そのマクロを実行してみましょう。」
ソンくん
「『セルを思いのままに動かそう』の『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シートを用意します。」
ソンくん
「今度も、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
パイさん
「それでは、そのマクロを実行してみましょう。」
ソンくん
「『セルを思いのままに動かそう』の『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シートを用意します。」
ソンくん
「今度も、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
パイさん
「それでは、そのマクロを実行してみましょう。」
ソンくん
「『セルを思いのままに動かそう』の『4』文字目から『5』文字分の文字列が取り出されて
セルE2に『思いのまま』と書きこまれました。」
パイさん
「このように、Mid関数を使うと、
対象となる文字列の指定位置から指定した文字数分の文字列を取り出すことができます。」