今回は、文字列操作関数であるLEFT関数とMID関数を使って、特定の文字列を抽出するやり方を分かりやすくご紹介したいと思います。
その際に使用する「FIND関数」と「SEARCH関数」の使い方や違いについても載せていますので、ぜひ参考にしてみてください。
「LEFT関数」と「MID関数」の使い方に関しては、こちらの記事をご覧ください。
FIND関数とSEARCH関数
LEFT関数やMID関数では、決められた文字数分だけしか抽出することができません。
しかし、「FIND関数」や「SEARCH関数」と組み合わせて使用することで、「~までの文字列を抽出」や「~から後の文字列を抽出」など、色々な条件に合わせて文字列を抽出することができます!
FIND関数
指定した文字が対象の文字列の何文字目にあるかを検索してくれる関数
SEARCH関数
指定した文字が対象の文字列の何文字目にあるかを検索してくれる関数
FIND関数とSEARCH関数の違い
先ほどの関数の説明を見てみると、全く同じ意味の関数に見えてしまいますよね。
もちろん、この2つの関数には明確な違いがあります!下図をご覧ください。
FIND関数とSEARCH関数の違い
FIND関数は、大文字・小文字を区別する
SEARCH関数は、大文字・小文字を区別しない
また、FIND関数はワイルドカードを使用できず、SEARCH関数では使用できるといった違いもありますが、あまり使用頻度は高くないため、画像にある違いだけでも覚えておきましょう!
実際に、この違いをExcelの画面で見ていきましょう。
先ほどの画像と同じように、文字列「MOS Excel365&2019」から文字「e」の位置をFIND関数とSEARCH関数で検索してみましょう。
C列にあるのは、それぞれの関数を実行した結果です。
「FIND関数」は、大文字・小文字を区別するため、小文字の「e」の位置を表示しています。
一方、「SEARCH関数」では、大文字・小文字の区別を行わないため、大文字の「E」の位置を表示しています。
※どちらも最初の文字から数えた位置を表しています
この違いを理解しておくことで、大文字・小文字の区別が必要なときでも、どちらの関数を使用すべきか見極めることができます。
FIND関数とSEARCH関数の使い方
まずは、「FIND関数」と「SEARCH関数」の使い方についてみていきましょう。
検索文字列
検索したい文字列を指定します。
例:区、年、空白など(セルも指定可)
対象
対象となるセルや文字列を指定します。
開始位置(省略可)
検索を開始する位置を指定します。
※注意点※
文字列「福島県福島市」から「福」の位置を検索する際に、
開始位置を1としたとき、結果は1となる。
開始位置を3としたとき、結果は4となる。
このように、開始位置の指定によって、結果が異なる場合があることに注意しましょう。
特定の文字列の抽出
LIGHT関数とFIND(SEARCH)関数の組み合わせ
ここからは、実際にExcelの画面を見ながら、特定の文字列の抽出について学んでいきましょう。
まずはじめに、LEFT関数と「FIND(SEARCH)関数」の組み合わせを見ていきましょう。
例として、氏名から姓のみを抽出したいと思います。
ここで大事なのは、どこの位置が分かることで抽出することができるかという考え方です。
今回の場合、姓と名には空白(全角スペース)があります。その位置が分かることで抽出することができそうです。実際にやってみましょう。
数式の中身はこのようになります。
数式 「=LEFT(B3,FIND(“ ”,B3,1)-1)」
文字列 「B3(対象の文字列)」
文字数 「FIND(” “,B3,1)-1」
文字数には「FIND関数」を入れますが(ネストまたは入れ子)、その際に忘れてはいけないのは、その値から「-1」をするということです!
FIND関数が返す値は空白の位置である「3」です。左から3文字抽出してしまうと、空白まで抽出されてしまいます。そのため、「-1」をすることで左から2文字を抽出し、姓のみを抽出することができるのです。
数式が入力出来たら、オートフィルを行いましょう。
オートフィルが実行され、式がコピーされました。
今回の場合は、大文字・小文字の区別が必要ないため、どちらの関数を使用しても大丈夫です。
そのため、「FIND関数」を「SEARCH関数」に変更しても、同じ結果が得られます。
MID関数とFIND(SEARCH)関数の組み合わせ
続いて、MID関数と「FIND(SEARCH)関数」の組み合わせを見ていきましょう。
例として、氏名から名のみを抽出したいと思います。
考え方は先ほどの姓の抽出と同じく、空白(全角スペース)の位置を探します。
MID関数の中身はこのようになります。
数式 「=MID(B3,FIND(“ ”,B3,1)+1,10)」
開始位置 「FIND(“ ”,B3,1)+1」
文字数 「10」※名が何文字かは分からないため、余裕を持った数値を指定しています
開始位置に「FIND関数」を入れますが(ネストまたは入れ子)、その際に忘れてはいけないのは、その値から「+1」をするということです!
FIND関数が返す値は空白の位置である「3」です。3文字目から抽出してしまうと、空白から抽出されてしまいます。そのため、「+1」をすることで空白の次の文字から抽出し、名のみを抽出することができるのです。
数式が入力出来たら、オートフィルを行いましょう。
オートフィルが実行され、式がコピーされました。
「FIND関数」を「SEARCH関数」に変更しても、同じ結果が得られます。
これで、氏名から姓と名を分けて抽出することができました。
こういった抽出を行うためにも、データの整理や統一は必要不可欠です。
練習問題
今回紹介した関数の練習問題を解いてみましょう!
問題は全部で3問です!
問3は、今回の問題用に文字数等が調整されています。どんな場面でも同じように抽出できるわけではありません。
全問正解だった方やそうでなかった方も、復習を定期的に行い、知識を定着させていきましょう!
今回は、文字列操作関数であるLEFT関数とMID関数を使って、特定の文字列を抽出するやり方を分かりやすく解説させていただきました。
関数の入れ子(ネスト)に慣れていくためには、柔軟な考え方が必要になっていきます。あまり難しくは考えずに、一つずつ分解して考えていく習慣をつけていきましょう!
Excelのオススメ教材はこちら!