【エクセル時短】は「少しでも早く仕事を終わらせたい!」というビジネスパーソンのみなさんに、Excelの作業効率をアップするワザをお届けする連載です。毎週木曜日更新。
過去の記事一覧はこちら【エクセル時短まとめ】
- 「氏名」から名字だけを取り出す
- 「メールアドレス」の「@」より前だけを取り出す
- 「商品コード」の「-」より前だけを取り出す
Excelでこうした作業、ときどきありますよね。「数か所だから手動でやってしまおう」という気持ちも分かりますが、1つずつコピペしていく作業が積もり積もって、時間のロスにつながってしまいます。
上記の作業における共通点は、「文字列の分割」で解決できるということです。【エクセル時短】第8回では、文字列の分割をすばやく正確に行える「LEFT」(レフト)関数と「FIND」(ファインド)関数のワザを解説します。
LEFT関数とFIND関数の機能を理解する
最初に、LEFT関数とFIND関数についておさらいしておきます。
LEFT
(文字列, 文字数)
LEFT関数は、1つ目の引数[文字列]の左から、2つ目の引数[文字数]で指定した文字数分の文字列を取り出します。半角と全角は区別しません。
FIND
(検索文字列, 対象, 開始位置)
FIND関数は、1つ目の引数[検索文字列]が、2つ目の引数[対象]のうち、3つ目の引数[開始位置]から何文字目にあるかを調べます。[開始位置]を省略した場合は、先頭から検索します。
まとめると、LEFT関数は「左から指定した文字数分を取り出す」、FIND関数は「指定した文字列が何文字目にあるかを調べる」、という働きをします。
FIND関数をLEFT関数の引数として使う
それでは実際にやってみましょう。メールアドレスの「@」より前を取り出す例で考えてみます。
「@」より前の文字数は不確定ですので、LEFT関数だけではうまくいきません。そこでFIND関数を使い、「@」がメールアドレスの何文字目にあるかを調べます。FIND関数で調べた文字数より前を、LEFT関数で取り出せばいいわけです。
1数式を入力する
FIND関数でセルC3にある「@」の位置を探し、そのFIND関数の結果を、LEFT関数の2つ目の引数に利用しています。「-1」の意味は後述します。
2メールアドレスの「@」より前を取り出せた
セルD3の数式をコピーしていくと、ほかのメールアドレスの「@」より前を自動で取り出せます。手作業でコピペするよりも圧倒的に高速です。
セルD3に入力している数式は以下のとおり。
=LEFT
(C3,FIND
("@",C3)-1)
この例では「@」より前を取り出したいので、「FIND("@",C3)」で調べた「@」の位置から「-1」しているのがポイントです。つまり「FIND("@",C3)-1」が、LEFT関数の2つ目の引数となります。
「氏名」から名字を取り出したいなら、名字と名前を区切っている「 」(全角スペース)などをFIND関数で探せばOKです。ぜひ、ほかの場面でも活用してみてください。