エクセルでは数式を使った計算や文字の入力、図表、グラフの作成など、さまざまなものを表現できます。その中でも、よくビジネスで使われるのが文字列の抽出です。
先頭から〇文字目、かっことかっこの間の文字の抽出など、長い文字列に対して任意の文字数を切り抜くことができます。
そこで使われるのがMID関数やLEFT関数、RIGHT関数です。文字列の抽出とは何か、どのような時に使うものなのか、基本的な事柄も解説するので、ぜひ参考にしてください。
目次
エクセルにおける文字列の抽出とは何のこと?
そもそも、エクセルにおける文字列の抽出とは何なのでしょうか?そこまで難しく考える必要はありません。シンプルに文字を切り取ると考えれば大丈夫です。
例えば、「090-(1111)-2222」という電話番号があった場合に、かっこの中の文字列を抽出すると抽出結果は、「1111」となりますよね。このような文字列の抽出作業は、エクセルでも可能です。任意のセルに入っている文字列を抽出できます。よく使われるのは「東京都」や「渋谷区」といった住所の一部の抽出や、かっこの中の文字列の抽出です。
エクセルで文字列を抽出する方法
エクセルで文字列を抽出する方法は、下記の3通りです。
・文字列の先頭(左側)から抽出(LEFT関数)
・文字列の最後(右側)から抽出(RIGHT関数)
・文字列の真ん中で抽出(MID関数)
いずれも対応する関数があり、文字列のどこを抽出したいのかによって使い分けが必要です。ただ、どの関数も数式の組み立て方はほとんど同じで、どれか1つを覚えてしまえば、他2つの関数も使えるので、安心してください。
LEFT関数を使って文字列の先頭から抽出
LEFT(レフト)関数は、文字列の左側(先頭)から任意の文字数を抽出する関数です。下記のような数式を記載します。
=LEFT(文字列,文字数)
第1引数の「文字列」には、文字列が入ったセルを指定します。上記の画像では、D2セルにLEFT関数の数式を入力しており、「2022年9月1日」と記入されたA2セルを引数にしました。
ちなみに、第1引数に文字列が記入されていないセルを選ぶと、空白を切り取る形となり、LEFT関数を入力したセルには、何も表示されなくなります。
第2引数の「文字数」には、数値を指定します。何文字目までを抽出するか自由に選べるのが第2引数です。半角、または全角の数字で指定します。上記の画像を見てみましょう。5文字目までを選択すると「2022年」、4文字目までを選択すると「2022」という文字列が抽出されます。
RIGHT関数で文字列の最後から抽出
RIGHT(ライト)関数は、文字列の末尾(右側)から文字数を数え始めて抽出する関数です。数式は下記のようになります。
=RIGHT(文字列,文字数)
第1引数の文字列は、LEFT関数と同様、文字を抽出する元の文字列が入ったセルを指します。C4セルに入力したRIGHT関数では、「2022年9月3日」と記入されたA4セルを引数にしてみましょう。LEFT関数と同じく、第1引数に文字列のないセルを指定してしまうと、空白セルから文字列を抽出することになるため、何も表示されなくなります。
第2引数には、末尾から何文字目までを抽出するのか数字を指定します。上記の画像では、4文字目まで(4)を選択すると「9月3日」、2文字目まで(2)を選択すると「9月3日」という文字列が抽出されました。
MID関数で文字列の真ん中を抽出
文字列の先頭はLEFT、文字列の末尾はRIGHT、真ん中の文字列はMID関数で抽出できます。ただし、MID関数は少し数式の形が異なるので注意が必要です。
LEFT関数とRIGHT関数は、数え始める位置が左右どちらかの端だったので、文字数を1箇所指定すれば使えましたが、MID関数は文字列の途中なのでそうはいきません。数え始める位置と抽出する文字数をを指定しましょう。数式は下記の通りです。
=MID(文字列,開始位置,文字数)
上記の画像では、D6セルを見てみましょう。A6セルを対象に、左から6番目、2文字分を抽出する数式を記入しました。すると、「9月」という文字が抽出されます。F6セルでは左から3番目を起点に5文字分抽出して「22年9月」と出力されます。
エクセルで任意の文字列の位置を調べるには?
冒頭で述べたように、MID関数はかっこ内の文字列を抽出する際に使える関数です。しかし、文字数を指定しなければならないので、このままでは自動化には向きません。例えば、住所の中の都道府県部分を抽出するとなったら、北海道、神奈川県、東京都というように3文字と4文字が入り混じるため、1つずつ関数の式を変える必要があります。
そのような場合に使えると便利なのが、FIND(ファインド)関数です。任意に指定した文字列が左から何文字目にあるのかを表示します。これを使えば丸かっこの「(」から「)」までを表示するといったことが可能です。
FIND関数がカウントする対象
FIND(ファインド)関数は、「都道府県」や「市区町村」、かっこ、ハイフン、数字など、指定した文字列が左から何文字目に位置しているかを出力する関数です。日本語、英語、数字、記号、全角、半角、大文字、小文字どれでもカウントできます。
FIND関数の数式・引数
FIND関数は、下記のような数式で表されます。
=FIND(検索文字列,対象,開始位置)
全部で3つの引数があるため、難しく捉えてしまうかもしれません。しかし、第3引数の開始位置は、省略できるため、実質2つだけ覚えれば大丈夫です。
第1引数:検索文字列
検索文字列は、開始位置を調べたい文字を記入します。エクセルの仕様上、ダブルクォーテーションで囲うことで、ひらがな、カタカナ、漢字、記号、アルファベットといった文字列を認識します。ダブルクォーテーションマークを忘れるとエラーが発生するため、注意しましょう。ただし、数字にはダブルクオーテーションマークがいりません。
第2引数:対象
第2引数の「対象」は、参照先のセルのことです。検索したい文字列を含まない誤ったセルを指定してしまうと、#VALUE!エラーが発生するため注意しましょう。
第3引数:開始位置
開始位置は、文字列の検索を始める位置を数値で指定する引数です。基本的には省略して構いません。省略すると、自動的に1が反映されて、文字列の先頭から検索を開始します。開始位置を指定しても、対象セルの先頭文字からの位置が返されるので特に考慮する必要はありません。
FIND関数の使う際に注意したいこと
FIND関数を使う際は、「検索する文字列の種類」「どのセルを参照先(対象セル)に指定するか」「ダブルクォーテーションマークで文字列を囲う」の3つに注意しましょう。この3つを把握していないと、各種エラーが発生する可能性が高くなります。
FIND関数で#VALUE!エラーが出た時の対処法
FIND関数を使う際によく見るのが#VALUE!エラーです。このエラーが発生する主な原因は次の2つです。
・検索する文字列を間違えている(第1引数のミス)
・対象のセルに指定した文字列が含まれていない(第2引数のミス)
「東京都中央区」という文字列に対して「町」と検索してしまうなど、初歩的なミスでエラーが発生します。第1引数で検索文字列を変更するか、第2引数で指定する対象を変更しましょう。
MID関数とFIND関数を組み合わせる
MID関数とFIND関数を組み合わせてかっこ内の文字を抽出してみましょう。
かっこの開始位置は、=FIND(“(“,B3)という数式で自動的に開始位置が表示されるようになっています。文字数は手打ちです。これらの要素を組み合わせて、=MID(B3,C3+1,D3)という数式を入力すると、かっこ内の文字を抽出できます。C3セルにプラス1しているのは、かっこの1つ右から文字を抽出したいからです。
FIND関数とFINDB関数との違い
文字列の位置を検索するFIND関数には、FINDB関数という類似の関数が用意されています。ほぼ同じ名前ですが、どのような違いがあるのでしょうか?
数える対象が文字かバイト(Byte)か
FIND関数 | FINDB関数 | |
カウントする対象 | 文字数 | バイト(byte)数 |
FIND関数が文字数を数えるのに対し、FINDB(ファインドビー)関数は、バイト(byte)数をカウントします。FIND関数はあらゆる文字(ひらがな、カタカナ、漢字、アルファベット、数字、記号、大文字、小文字、全角、半角)を1つずつカウントします。一方のFINDB関数は、バイト数を数える関数です。
バイトとはデータの単位を指し、全角文字を2バイト、半角文字を1バイトとしてカウントします。「東京都新宿区歌舞伎町123-123」という文字列の中でハイフン(-)を検索する場合、出力結果は「24」です。東京都新宿区歌舞伎町は全角文字なので2バイトずつカウントされて20になります。「123」という半角数字は1バイトずつカウントして3、つまりハイフンは24バイト目に該当するため、出力結果が24になる仕組みです。
FIND関数とSEARCH関数の違い
FIND関数 | SERACH関数 | |
カウントする対象 | 文字数 | 文字数 |
全角半角の区別 | する | しない |
ワイルドカードの使用 | 不可 | 可能 |
実はFIND関数やFINDB関数の他にも、文字列の開始位置を検索する関数があります。それはSEARCH(サーチ)関数です。ここでは、FIND関数とSEARCH関数の違いについて解説します。
文字の区別が曖昧
FIND関数では全角文字と半角文字を分けて判別します。先ほどMID関数とFIND関数の組み合わせの見出しで、かっこ内の文字数を検索する際、全角かっこか半角かっこのどちらを検索するのかで結果が変わってきます。
例えば、FIND関数で全角の丸かっこが入力されたセルに対し、半角の丸かっこを検索すると、#VALUE!エラーが発生します。エラーが発生しないようにするには、引数を全角かっこに修正するか、IFERROR関数を組み込んでエラーの回避が必要です。
一方のSEARCH関数は、全角と半角を分けずに文字列を検索する関数です。SEARCH関数はこの仕様を活用して、あいまい検索をすることができ、大文字、小文字、全角、半角関係なしに、検索できます。
ワイルドカード
ワイルドカードという機能をご存知でしょうか?ワイルドカードとは、特定の記号を用いて、〇〇という文字を含む、〇〇という文字から始まるといった検索条件を設定できるという機能です。
例えば、アスタリスク(*)を使うと、下記のような検索条件を設定できます。
*〇〇* | 「〇〇という文字を含む」 |
〇〇* | 「〇〇という文字から始まる」 |
*〇〇 | 「〇〇で終わる」 |
ワイルドカードを使って検索ができるのがSEARCH関数の強みです。FIND関数では、ワイルドカード検索ができないので、曖昧検索にはSEARCH関数が向いています。
まとめ
エクセルのMID関数を使えば、文字列の真ん中部分を抽出できます。文字列を左から抽出する場合は、LEFT関数、右から抽出する場合はRIGHT関数を使いましょう。FIND関数を使うことで、指定した文字までの文字数を自動でカウントできます。バイト数をカウントするFINDB関数と混同しないようにしましょう。