応募する

応募する

Tel.03-4500-9361 / 受付時間:平日10:00~19:00

こちらは全て株式会社エージェントゲートでの採用・募集となります。

エクセル(Excel)で複数条件を使って文字列を抽出するには?|関数を組み合わせて表現してみよう

エクセルの関数は、単体では明確な使い道がないものでも、組み合わせることで表現の幅を広げられます。例えば指定したセルの番地を返すINDEX関数と、検索したい文字列が何番目にあるか返すMATCH関数は、それぞれ単体では、ほとんど使い道がありません。

しかし、この2つの関数を組み合わせることで、複数条件を使って文字列を抽出できるようになります。

この記事では、INDEX関数とMATCH関数を使った文字列の抽出方法や、同様の作業ができるエクセルの機能を解説します。こまめにエクセルの画像も挟んでいるので、初心者の方はぜひ参考にしてください。

エクセルの文字列の抽出とは?

そもそもエクセルの文字列の抽出とは、セルに入っているデータを抽出(転記)することを指しています。抽出するデータは、関数で条件づけをすることで、絞り込みが可能です。

例えば国語、数学、英語、理科、社会といった5教科のテストの点数をまとめた表で、数学の点数を抽出する作業を、文字列の抽出といいます。

今回は複数条件で文字列をするので、Aさんの国語の点数、Bさんの数学の点数といった、より複雑な文字列の抽出が可能です。抽出の仕方を見ていきましょう。

INDEX関数とMATCH関数の使い方

まずは、INDEX(インデックス)関数とMATCH(マッチ)関数の使い方を確認しましょう。

INDEX関数の使い方

INDEX関数は、選択したセル範囲の中で、指定した行と指定した列が交差する位置のデータを返します。INDEX関数の数式は下記のようになります。

=INDEX(配列,行番号,列番号)

上の画像では、配列にA2セルからD7セルまでを選択して、行番号は「2」、列番号は「1」としました。すると、2行目の1列目であるA3セルの「Bさん」というデータが返されました。

行番号と列番号を指定する際に、選択範囲外の数値を入力してしまうと、「#REF!」エラーが発生します。このエラーが発生したら、引数を見直してみましょう。

MATCH関数の使い方

MATCH関数は「国語」「◯」「80」といった文字列、数値、記号を検索して、該当するセルがあった場合に、相対的な位置を返す関数です。数式の書き方は以下のようになります。

=MATCH(検索値,検索範囲,照合の種類)

それぞれの引数は下記のような特徴を持っています。

検索値検索に用いる条件値
検索範囲条件に合致する値を検索するセルの範囲
照合の種類1:以下0:一致 -1:以上

まずは「検索値」です。これは「どの文字列を探すか」と言い換えられます。「”国語”という文字」、「80という数字」、「△という記号」など、さまざまな文字列を指定して検索ができる引数です。

検索値には、検索したい文字列を入力するか、検索対象の文字列がすでに入力されたセルを指定するかの2つの方法があります。もしも直接文字列を入れる際は、半角のダブルクォーテーションマーク(” ”)で囲みましょう。エクセルではダブルクォーテーションマークで囲んだ数字を文字列だと判断するため、忘れてしまうと文字列だと判断されなくなり、「#NAME?」エラーが発生してしまいます。

一方、セル番地を検索値にしてしまえば、ダブルクォーテーションマークは不要です。

次に第2引数「検索範囲」についてです。こちらは検索する範囲を指しています。同一列か同一行で範囲を選択しましょう。

ポイントとしては、検索範囲を「1行」または「1列」の範囲内で指定しなければいけない点です。上記の画像では、A2セルからD7セルの4列×6行の範囲を検索しようとして、「#N/A」エラーが発生しました。

第3引数は「照合の種類」です。照合には「以下」を示す”1”、「完全一致」を示す”0”、「以上」を示す”-1”がありますが、省略しても構いません。省略した場合、最も多く使われる「完全一致」の”0”が引数に適用されるので、数式を簡略化するためにも、基本的には省略してOKです。

検索値、検索範囲、照合の種類の3つを正しく引数に設定すると、以下のような表を作成することができます。

INDEX関数とMATCH関数を組み合わせる

INDEX関数とMATCH関数の使い方がわかったところで、2つの関数を組み合わせてみましょう。

今回は検索対象をAさん、科目を数学にします。文字列を直接入力すると、ダブルクォーテーションマークの付け忘れが発生する、文字列が長いと、数式が長くなり、可読性が低下するといったデメリットがあるため、事前に検索内容を別のセルに入力しておきましょう。(今回はG2セルとI2セル)

数式は下記のようになります。

=INDEX(A2:C7,MATCH(G2&I2,A2:A7&B2:B7,0),3)

まずINDEX関数の第1引数に表全体(A2セル〜C7セル)を指定して、第1引数にMATCH関数の返り値を指定します。MATCH関数では、氏名の入ったA2セル〜A7セルの中から「Aさん」、教科の入ったB2〜B7セルの中で「数学」を検索して、照合は完全一致を選んでいます。するとMATCH関数の返り値が4になり、INDEX関数の第3引数で、点数の入った3列目を指す「3」を指定すれば、下記のようにAさんの数学の点数が表示されます。

プルダウンリストを組み合わせるとオシャレに

エクセルには入力規則機能というものがあります。セルに入力できるデータをあらかじめ設定しておくことで、誤字脱字、予期せぬエラーを防げるのがメリットです。セルをクリックすると逆三角形が表示されて、選択肢が表示されるプルダウンリストは、アンケートやテストなどで見たことがある方は多いでしょう。

先ほどは、対象と科目を手打ち入力しましたが、プルダウンリストを使うとオシャレに対象セルを指定できます。また、入力規則を付けておくことで、コピペミスも防げるのは嬉しいポイントです。

ここでは、INDIRECT関数を使ってプルダウンリストを連同させる方法を解説します。

INDIRECT関数を使う方法

まずは、1つ目の選択肢となる対象人物のセル範囲をリスト登録しましょう。該当するA2セル〜A7セルまでの範囲を選択して、「数式」タブの中央部にある「名前の定義」を選択します。ここでは「対象」としておきましょう。

次に、科目名で「名前の定義」を行います。ここでは「Aさん」という名前に、国語と数学を登録するだけなので、選択範囲はB4セルとB5セルです。Aさん、Bさん、Cさんの3回繰り返したら、名前の定義は完了です。

次は、実際にプルダウンリストを作成してみましょう。F2セルを選択した状態で「データ」タブの「データの入力規則」をクリック、入力値の種類をリストにして、入力値の内容を「=対象」とします。これで、Aさん、Bさん、Cさんを選ぶリストが作成できました。

次はいよいよINDIRECT関数が登場します。I2セルを選択して、データの入力規則から、リストを選択し、元の値に「=INDIRECT(G2)」と指定しましょう。I2セルには対象の人物名のリストが入力されています。

これにて設定は完了です。実際に対象を選択してみると、科目が表示されるようになりました。

他の関数を使った文字列の抽出の仕方

文字列を抽出するという意味では、「LEFT関数」「RIGHT関数」「MID関数」もそれができる関数です。それぞれ文字の抽出の仕方が異なっています。

LEFT関数文字列の先頭(左側)から抽出
RIGHT関数文字列の最後(右側)から抽出
MID関数文字列の真ん中で抽出

左右真ん中に対応する関数があり、文字列のどの部分を抽出したいのかによって使い分けが必要です。しかし、上記の3つ関数は、ほとんど同じ数式なので、どれか1つ関数の使い方を覚えてしまえば、他2つの関数も自然と使えるようになるので、安心してください。

LEFT関数で文字列の先頭から抽出

LEFT(レフト)関数は、文字列の先頭(左側)から数え始めて、指定した文字数を抽出する関数です。数式は下記のようになります。

=LEFT(文字列,文字数)

第1引数の文字列は、抽出したい文字列が入ったセルを指します。第2引数には、何文字目まで抽出するか、半角・全角どちらでも良いので、数字で指定します。上記の画像では、5文字目までを選択すると「2022年」、7文字目まで引数に指定すると「2022年9月」という文字列が抽出されます。

RIGHT関数で文字列の最後から抽出

RIGHT(ライト)関数は、文字列の末尾(右)から数え始めて文字を抽出する関数です。数式は下記のようになります。

=RIGHT(文字列,文字数)

第1引数の「文字列」は、LEFT関数と同じく、抽出したい文字列が入ったセルを指します。

第2引数には、末尾から何文字目までを抽出するか半角または全角の数字で指定します。上記の画像では、4文字目まで選択すると「9月3日」、2文字目まで選択すると「9月3日」という文字列が抽出されました。

MID関数で文字列の真ん中を抽出

文字列の先頭、末尾を抽出したら、真ん中は抽出できないのだろうかと思いますよね。MID関数を使えば文字列の途中でも抽出できます。

LEFTとRIGHT関数は、数え始める位置がどちらも端だったので、片方の文字数を指定すれば正常に動きましたが、MID関数はそうもいきません。左から◯文字、△文字分というふうに抽出する文字数を指定する必要があります。数式は下記の通りです。

=MID(文字列,開始位置,文字数)

上記の画像では、C6セルで左から6番目、2文字を抽出する数式を記入し、「9月」という出力結果を得られました。E6セルでは、3番目から5文字を抽出して「22年9月」と出力されています。このように、MID関数を使えば文字列の途中でも抽出できます。

FIND関数と組み合わせることが多い

上記で紹介した、LEFT関数、RIGHT関数、MID関数は、FIND(ファインド)関数と組み合わせることが多いので、ぜひ覚えておきましょう。住所の中の「県」や「市」、郵便番号のハイフン(-)など、指定した文字列が、何文字目に位置しているのか取得する関数です。

ひらがな、カタカナ、英語、数字、大文字小文字、半角全角に関係なく、全ての文字列が1つずつカウントされます。

似たような関数にFINDB関数というものがあり、こちらは文字数ではなく、バイト数で文字列を検索することに注意しましょう。バイトは日本語のような全角文字は2バイトで数えますが、半角数字、アルファベットのような、半角文字は1バイトとして数えます。

同じ「東京都新宿区123-456」という文字列でハイフンの位置を求めたい場合でも、FIND関数では「10」が返る一方で、FINDB関数では、「16」が返るため、使い分けに注意しましょう。

まとめ

エクセル(Excel)で複数の条件で文字列を抽出する際は、INDEX関数とMATCH関数を使いましょう。単体では使い道が限られても、関数同士組み合わせると応用が利きます。例えば、Aさんの国語の点数、肉類のもも肉の値段など、複数の条件を指定することで、表現の幅が広がります。

文字列を抽出するだけであれば、LEFT関数、RIGHT関数、MID関数といった関数も有効です。いずれの関数も文字数を指定して、文字列を抽出します。数式が似通っているので、どれか1つ習得すれば、他の関数でも使えるのがメリットです。