0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

セル内の文字を抽出する_3(左から指定の文字まで)

Posted at

文字の左から指定の文字まで抽出する

前回の左から指定数の文字を抽出する場合、
全て同じ文字数を抽出すれば解決するのであれば良いのですが、
苗字と名前
都道府県と市区町村
数字と文字
など一緒の文字列になっているものを分けたい場合などをご紹介します。

見本としてA1に「宮本 武蔵」、A2に「佐々木 小次郎」としました。
image.png

Excel関数

関数で抽出する場合の書き方

=LEFT(対象セル,特定の文字の1つ前の数字)

入力例
=LEFT(A1,FIND(" ",A1)-1)

"特定の文字の1つ前の数字"
にFINDの関数を使っています。
FINDは特定の文字が何文字目にあるかを返してくれる関数です。

=FIND(検索文字,対象セル,[開始位置])

入力例
=FIND(" ",A1)

開始位置は任意です。
開始位置をうまく使うと電話番号の-(ハイフン)等、
同じ検索文字の一つ目、二つ目を探して文字を抽出したりできます。
ココは別の記事で分けて書こうと思います。
image.png

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

実行結果
image.png

使用例としては市区町村を分けるときなどに使えると思います。
image.png

次回は文字の中間を抜き出す方法を紹介したいと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?