この記事を読むのに必要な時間は約 6 分です。
エクセルで左側から欲しい文字まで、動的に文字列を取得したい!
そんな時は、LEFT関数とFIND関数を組み合わせることです。
具体的な組み合わせ方については後半に書きました。
LEFT関数の使い方なんて分かってるよという方は、最初のほうを読み飛ばして頂いて大丈夫です。
目次(リンク)
LEFT、LEFTB関数の使い方
LEFTやLEFTB関数の使い方は、それぞれ次のように書きます。
LEFT関数
構文 | LEFT(文字列,[文字数]) |
---|---|
意味 | 文字列の左側から、指定した文字数分の文字列を取得 |
引数1:文字列 | 取得先の文字列やセルを指定 |
引数2:文字数 | 省略可、省略した場合は1文字 |
下図の例の場合、B2セルに格納されている文字列「ABCDEABCDE」の左側から3文字取得、「ABC」です。
全角文字の場合、「あいうえおあいうえお」の左から3文字取得。
「あいう」となります。
LEFTB関数
構文 | LEFTB(文字列,[バイト数]) |
---|---|
意味 | 文字列の左側から、指定したバイト数分の文字列を取得 |
引数1:文字列 | 取得先の文字列やセルを指定 |
引数2:バイト数 | 省略可、省略した場合は1バイト |
LEFTB関数はLEFTと違い、バイト数で取得します。
半角文字の「ABCDEABCDE」の左から3文字なら、「ABC」です。
全角文字に対してLEFTBを使う時の注意点
全角だと1文字2バイトなので、意図した通りにならないかもしれません。
「あいうえおあいうえお」の左から3バイト取得すると、下図のように「あ」だけになります。
「あい」まで取得するには4バイト必要ですが、1バイト足りず切り捨てられたわけです。
文字数、バイト数の引数を省略した場合は?
LEFT関数なら、2つ目の引数である文字数を省略すると、左から1文字となります。
下図のように、半角も全角も1文字取得です。
LEFTB関数の場合、同じようにはならないかもしれません。
2つ目の引数を省略したら、左から1バイト取得になります。
半角文字なら取得できますが、全角は2バイトなので1文字も取得できません。
ExcelでLEFT関数とFIND関数を組み合わせて使う
FIND関数と組み合わせて使うと、LEFT関数がより柔軟に文字を取得できるようになります。
例えば、私のブログの記事タイトル一覧からカテゴリ分けしたいとします。
【Excel】や【Windows】などの文字列で始まるように書いていることが多いので、「】」までの文字数がFIND関数で分かれば、その文字数分LEFT関数で取得するだけですね。
その場合、次のような感じで書きます。
=LEFT(C3,FIND(“】”,C3))
上図のように、探す文字が1パターンならとても簡単です。
別の例で考えてみましょう。
都道府県名を取得したいなら、FIND(“県”,C20)のように県などの位置をFIND関数で見つけて、LEFT関数で取得することができます。
少々厄介なのが、県以外にも都道府があることです。
次のように、FIND関数で見つからない場合エラーになることを利用して、ISERROR関数とIF関数を使って他の検索文字列に切り替えると何とかなるでしょう。
=LEFT(C20,IF(ISERROR(FIND(“県”,C20)),IF(ISERROR(FIND(“府”,C20)),FIND(“都”,C20),FIND(“府”,C20)),FIND(“県”,C20)))
あまり複雑な数式なるくらいなら、マクロで書いた方が良いかもしれませんね。
まとめ:LEFT関数とFIND関数を使って文字列の先頭から任意の桁数を抜き出す方法
LEFT関数の使い方、そしてFIND関数との組み合わせ方でした。
抜き出したい文字までの位置が変わっても、FIND関数で文字数が分かり、動的に抜き出せるようになります。
書き方は、次のようにLEFT関数の中にFIND関数を書きます。
=LEFT(文字列,FIND(検索文字列,対象))
検索文字列が複数ある場合、ある文字列で見つからなくてエラーになればIF関数とISERROR関数を使って検索文字列を切り替えつつ、書くこともできます。
ややこしければ、WORK用のセルを用意して計算過程を途中で分けて書くと良いかもしれません。
あまり複雑になるのであれば、数式よりもマクロで書いた方がシンプルで書きやすいでしょう。
その場に合った方法を選んでもらえればと思います。
最後までお読みいただき、ありがとうございました。