半角スペースの左側と右側を取り出すマクロ

 下図のように名字と名前が半角スペースで区切られた氏名の入ったセルから、名字を取り出す LEFTSPACE関数 と、名前だけを取り出す RIGHTSPACE 関数 を作ってみます。

 VBA苗字と名前を抜き取るプロシージャ

 別にデータは氏名でなくてもいいのですが、要するに 半角スペースの左側と右側を取り出すファンクションマクロ(ユーザー定義関数) なのです。エクセルでは LEFT 関数と FIND 関数を組合わせる定番 ですが、そんな組合わせ方をいちいち覚えていられないと思うので、下の関数をモジュールにコピーしてしまったほうが早いです。
 

LEFTSPACE関数

 半角スペースの左側を取り出すマクロですよ。

 Function LEFTSPACE(mystr As String) As String

  LEFTSPACE = Left(mystr, InStr(mystr, " ") - 1)

 End Function

 たった3行のちょー簡単なマクロです。シート上で

=LEFTSPACE("城戸 涼音")

と入力すると「城戸」と返るはずです。もちろん上に載せた図のように、セルを引数にするこもできます。

Left 関数と InStr 関数を組合わせます

 VBA の Left 関数は

Left(文字列,取得したい文字数)

と書いて、左側から「取得したい文字数」の文字を抜き出します。また InStr 関数は

InStr([開始位置,] 文字列, 検索文字列, [比較モード])

のような形で使用しますが、[ ] は省略できます。今は開始位置と比較モードは使わないので、

InStr(文字列, 検索したい文字列)

と書きます。これによって1つめの引数で指定した文字列の中で「検索したい文字列」の先頭文字が何番目にあるかという数値を返します。上のマクロでは

InStr(mystr, " ")

によって半角スペースが何番目にあるかを得ています。そして Left 関数と組合わせて

Left(mystr, InStr(mystr, " ") - 1)

と記述することによって、指定した文字の左から半角スペースの1つ手前までを抜き出しているというわけです。
 

RIGHTSPACE 関数

 今度は半角スペースの右側を取り出してみましょー。

 Function RIGHTSPACE(mystr As String) As String

  RIGHTSPACE = Mid(mystr, InStr(mystr, " ") + 1)

 End Function

 たとえばセルに

=RIGHTSPACE("城戸 涼音")

と入力すると「涼音」が返りますよ。

Right 関数と InStr 関数を組合わせます

 VBA の Right 関数は

Right(文字列,取得したい文字数)

と書いて、右側から「取得したい文字数」の文字を抜き出します。これを先ほど説明した InStr 関数と組合わせて、

Mid(mystr, InStr(mystr, " ") + 1)

とすれば、右側から半角スペースの1つ後ろまで得ることができます。

 ≫ VBA の技術メニュー

スポンサードリンク
末尾大型広告
末尾大型広告

コメントをどうぞ

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)