【関数・プロパティ設定をつかう】
2 文字列の右端から一部の文字列を取得
3 文字列の指定位置から指定文字分の文字列を取得
4 三つの文字列取得関数をつかう
5 文字列の指定位置から1文字を取得
6 文字列の文字数を取得
7 文字列のループで1文字ずつ分解
8 文字が入っているセルの最大行を取得
文字列の指定位置から1文字を取得
パイさん
「今回は、Excel VBA/マクロで文字列の指定位置から1文字を取得してみます。
ExcelのセルA3から取得した文字列に対して、
セルB2から取得した文字数を取り出す開始位置から1文字分の文字列を取り出して、
セルB3に格納してみましょう。
予め、次のようなExcelシートを用意します。」
(1) 開始位置: 1
パイさん
「文字数を取り出す開始位置:セルB2の値を『1』として、
ExcelのセルA3から1文字目の文字を取り出して、
セルB3に格納してみましょう。」
ソンくん
「文字数を取り出す開始位置:セルB2の値が『1』で1文字分の文字列を取り出すということは、
左端から1文字分の文字列を取り出すということだから、
Left関数がつかえるのではないでしょうか。」
パイさん
「そうですね。文字数を取り出す開始位置が『1』ということは、
左端から文字列を取り出すということだから、
Left関数をつかうことができます。
しかし、もしも開始位置が『1』より大きな数、例えば『2』だったらどうしたら良いと思いますか。」
ソンくん
「確かに、Left関数は左端から文字列を取り出すものだから、
左から『2』文字目の文字列を取り出すことができません。
それなら、文字数を取り出す開始位置が指定できるMid関数がつかえるのではないでしょうか。」
パイさん
「よく気づきましたね。
第2引数として文字数を取り出す開始位置を指定できるMid関数であれば、
開始位置が変化しても柔軟に対応できます。」
ソンくん
「それでは、Mid関数をつかってみます。
セルA3から取得した文字列に対して
セルB2から取得した開始位置から1文字分の文字列を取り出して
セルB3に格納するのだから、
左辺には、戻り値としてRange("B3").Value
右辺には、Mid関数
第1引数:StringにRange("A3").Value
第2引数:StartにRange("B2").Value
第3引数:Lengthに『1』
を当てはめれば良いのだから、
Range("B3").Value = Mid(Range("A3").Value, Range("B2").Value, 1)
これで良いのでしょうか。」
Sub Mid関数_1文字分解()
Range("B3").Value = Mid(Range("A3").Value, Range("B2").Value, 1)
End Sub
パイさん
「それでは、そのマクロを実行してみましょう。」
ソンくん
「『セルを思いのままに動かそう』の『1』文字目の文字が取り出されて、
セルB3に『セ』と書きこまれました。」
(2) 開始位置: 2
パイさん
「文字数を取り出す開始位置:セルB2の値を『2』に変えて、
ExcelのセルA3から2文字目の文字を取り出して、
セルB3に格納してみましょう。」
Sub Mid関数_1文字分解()
Range("B3").Value = Mid(Range("A3").Value, Range("B2").Value, 1)
End Sub
ソンくん
「同じマクロを実行してみます。」
ソンくん
「『セルを思いのままに動かそう』の『2』文字目の文字が取り出されて、
セルB3に『ル』と書きこまれました。」
(3) 開始位置: 3
パイさん
「文字数を取り出す開始位置:セルB2の値を『3』に変えて、
ExcelのセルA3から3文字目の文字を取り出して、
セルB3に格納してみましょう。」
Sub Mid関数_1文字分解()
Range("B3").Value = Mid(Range("A3").Value, Range("B2").Value, 1)
End Sub
ソンくん
「同じマクロを実行してみます。」
ソンくん
「『セルを思いのままに動かそう』の『3』文字目の文字が取り出されて、
セルB3に『を』と書きこまれました。」
(4) 開始位置:最後の文字位置
パイさん
「文字数を取り出す開始位置:セルB2の値を最後の文字位置に変えて、
ExcelのセルA3から最終文字を取り出して、
セルB3に格納してみましょう。」
ソンくん
「『セルを思いのままに動かそう』の最後の文字位置を、左から数えてみます。
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13
最後の文字位置は『13』だから、セルB2に『13』を書きこみます。」
Sub Mid関数_1文字分解()
Range("B3").Value = Mid(Range("A3").Value, Range("B2").Value, 1)
End Sub
ソンくん
「同じマクロを実行してみます。」
ソンくん
「『セルを思いのままに動かそう』の『13』文字目の文字が取り出されて、
セルB3に『う』と書きこまれました。」
パイさん
「試しに、対象文字列:セルA3
Mid関数の文字数を取り出す開始位置:セルB2
の値を適当な文字や数字に書きかえて、マクロを実行して、
文字列の指定位置から1文字を自由自在に取得することができる
ことを確かめてみましょう。」