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

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

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

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

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

6 文字列の文字数を取得

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

8 文字が入っているセルの最大行を取得

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

パイさん

「今回は、Excel VBA/マクロで文字列の指定位置から1文字を取得してみます。

 ExcelのセルA3から取得した文字列に対して、

 セルB2から取得した文字数を取り出す開始位置から1文字分の文字列を取り出して、

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

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

Img7_2_11

(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

パイさん

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

Img7_2_13

ソンくん

「『セルを思いのままに動かそう』の『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

ソンくん

「同じマクロを実行してみます。」

Img7_2_14

ソンくん

「『セルを思いのままに動かそう』の『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

ソンくん

「同じマクロを実行してみます。」

Img7_2_15

ソンくん

「『セルを思いのままに動かそう』の『3』文字目の文字が取り出されて、

 セルB3に『を』と書きこまれました。」


(4) 開始位置:最後の文字位置

パイさん

「文字数を取り出す開始位置:セルB2の値を最後の文字位置に変えて、

 ExcelのセルA3から最終文字を取り出して、

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

ソンくん

「『セルを思いのままに動かそう』の最後の文字位置を、左から数えてみます。

 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13

 最後の文字位置は『13』だから、セルB2に『13』を書きこみます。」

Img7_2_16

Sub Mid関数_1文字分解()

 Range("B3").Value = Mid(Range("A3").Value, Range("B2").Value, 1)

End Sub

ソンくん

「同じマクロを実行してみます。」

Img7_2_17

ソンくん

「『セルを思いのままに動かそう』の『13』文字目の文字が取り出されて、

 セルB3に『う』と書きこまれました。」


パイさん

「試しに、対象文字列:セルA3

 Mid関数の文字数を取り出す開始位置:セルB2

 の値を適当な文字や数字に書きかえて、マクロを実行して、

 文字列の指定位置から1文字を自由自在に取得することができる

 ことを確かめてみましょう。」