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

12 指定した行番号と列番号のセル番地を取得

13 特定の文字列を指定文字列に置き換える

14 セル列番号を英字の列名に変換

15 文字列の中で特定の文字の位置を取得

16 セルの書体を変更

17 セルの文字サイズを変更

18 セルの罫線を変更

文字列の中で特定の文字の位置を取得

パイさん

「今回は、Excel VBA/マクロのInStr関数によって文字列の中で特定の文字があればその位置を取得してみましょう。

 InStr関数の構文は、次のようになります。」

Img7_2_51

パイさん

InStr関数では、

 引数:String1に対象となる文字列

 引数:String2に検索したい文字列を入れると、

 対象となる文字列の中で指定した文字を検索し、

 ヒットすれば、戻り値として、文字列の先頭からの位置数

 を受け取ることができます。

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

 ExcelのセルA2に『セルを思いのままに動かそう』、セルC2に『』を入れた後、

 InStr関数をつかい対象となる文字列の中で指定した文字を検索し、文字列の先頭からの位置数を受け取って、

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

Img7_2_52

ソンくん

「早速、InStr関数をつかってみます。引数としてセルA2・セルC2から取得した文字列を渡してから、

 先頭からの位置数を受け取り、セルD2に格納するのだから、

 左辺には、Range("D2").Value

 右辺には、InStr関数引数:String1にRange("A2").Value、

 引数:String2にRange("C2").Value

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

 Range("D2").Value = InStr(Range("A2").Value, Range("C2").Value)

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

Sub InStr関数()

 Range("D2").Value = InStr(Range("A2").Value, Range("C2").Value)

End Sub

パイさん

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

Img7_2_54

ソンくん

InStr関数により、『セルを思いのままに動かそう』から『』が検索されて、セルD2に先頭からの位置『1』が

 書きこまれました。」


パイさん

「ExcelのセルA2に『セルを思いのままに動かそう』、セルC2に『』を入れた後、

 InStr関数をつかい対象となる文字列の中で指定した文字を検索し、文字列の先頭からの位置数を受け取って、

 セルD2に格納してみましょう。先ほどのマクロを実行してみましょう。」

Img7_2_55

ソンくん

InStr関数により、『セルを思いのままに動かそう』から『』が検索されて、セルD2に先頭からの位置『4』が

 書きこまれました。」


パイさん

「ExcelのセルA2に『セルを思いのままに動かそう』、セルC2に『』を入れた後、

 InStr関数をつかい対象となる文字列の中で指定した文字を検索し、文字列の先頭からの位置数を受け取って、

 セルD2に格納してみましょう。先ほどのマクロを実行してみましょう。」

Img7_2_56

ソンくん

InStr関数により、『セルを思いのままに動かそう』から『』が検索されて、セルD2に先頭からの位置『10』が

 書きこまれました。」


パイさん

「ExcelのセルA2に『セルを思いのままに動かそう』、セルC2に『』を入れた後、

 InStr関数をつかい対象となる文字列の中で指定した文字を検索し、文字列の先頭からの位置数を受け取って、

 セルD2に格納してみましょう。先ほどのマクロを実行してみましょう。」

Img7_2_57

ソンくん

InStr関数により、『セルを思いのままに動かそう』から『』が検索されたけど、ヒットしなかったため

 セルD2に『0』が書きこまれました。」


パイさん

「このように、InStr関数をつかえば、文字列の中で特定の文字の位置を取得することができます。」