文字の左から指定の文字まで抽出する
前回の左から指定数の文字を抽出する場合、
全て同じ文字数を抽出すれば解決するのであれば良いのですが、
苗字と名前
都道府県と市区町村
数字と文字
など一緒の文字列になっているものを分けたい場合などをご紹介します。
見本としてA1に「宮本 武蔵」、A2に「佐々木 小次郎」としました。
Excel関数
関数で抽出する場合の書き方
=LEFT(対象セル,特定の文字の1つ前の数字)
入力例
=LEFT(A1,FIND(" ",A1)-1)
"特定の文字の1つ前の数字"
にFINDの関数を使っています。
FINDは特定の文字が何文字目にあるかを返してくれる関数です。
=FIND(検索文字,対象セル,[開始位置])
入力例
=FIND(" ",A1)
開始位置は任意です。
開始位置をうまく使うと電話番号の-(ハイフン)等、
同じ検索文字の一つ目、二つ目を探して文字を抽出したりできます。
ココは別の記事で分けて書こうと思います。
ExcelVBA
VBAで抽出する場合の書き方
結果 = Left(対象セル,特定の文字の1つ前の数字)
としたいのですが、今までのRightやLeftのようにFindだけでは使えません。
別途計算をするか、"WorksheetFunction.Find"として書きます。
関数と同じ処理をしたいけど、そのままだと動かない場合に"WorksheetFunction"を使う事で
Excel関数と同じ処理をする事ができます。
Sub 文字の右から抽出()
'セルA1の左から半角スペースの一文字前までをセルB1に出力
Cells(1, 2) = Left(Cells(1, 1), WorksheetFunction.Find(" ", Cells(1, 1)) - 1)
'確認用のメッセージボックス
MsgBox Cells(1, 2)
End Sub
次回は文字の中間を抜き出す方法を紹介したいと思います。