8_アイキャッチ_Excel(エクセル)のワイルドカード「」「」の使い方(部分一致で検索する方法)_

 

Q. Excelでワイルドカードってどうやって使えばいいの?

今日はこんなお困りごとを解決します。

Excelエクセルでのワイルドカード「*」「?」の使い方を例題を用いてくわしく解説していきます。

本記事でわかること
  • CASE1:「*(半角アスタリスク)」を使った部分一致検索で関数計算する
    (SUMIF関数 / COUNTIF関数 / VLOOKUP関数)
  • CASE2:「?(半角クエスチョンマーク)」を使った部分一致検索で関数計算する
    (SUMIF関数 / COUNTIF関数 / VLOOKUP関数)

18_001_本記事でわかること

 

そもそもワイルドカードとは?という人は、こちらの基礎知識編をご参照ください♩

今日は実際に関数と組み合わせての実践編になります。さっそくいきましょう!

 

CASE1:Excel関数式のワイルドカード「*(半角アスタリスク)」の使い方

ワイルドカード「*」が示す意味合いをおさらい

「 *(半角アスタリスク)」の役割

「*」・・・「任意の0文字以上の文字列」を示す
なんの文字でもいいので0文字以上の文字列と置き換えることができる
(字数に限らずすべての文字・スペースにも一致)

 

例)「ねこ*」で検索する
➔「ねこ〇〇(後に続く文字は何文字でも可)」「ねこ」に一致

例)「*1」で検索する
➔「〇〇1(前に続く文字は何文字でも可)」「1」に一致

代替文字が0文字でも一致するので「ねこ」「1」にも一致するというわけです。

一方で「こねこ」や「12」には一致しません。

 

SUMIF関数で合計値を求める

「*」を使って一致したデータの合計値を求めていきます。

Excel操作方法

例:セルF4にクラス1組の合計得点を算出したい
(A列の学生番号で先頭文字が「1-」となっているのが1組)
18_002_SUMIF関数を使った例

その人が何組に属しているのかクラスを判別するため "キー" となるのが「1-」など学生番号の先頭文字なので、SUMIFの「検索条件」に学生番号先頭文字の部分一致を指定すればOK!

1セルF4にSUMIF関数を入力していく
検索条件には、「*」を使って学生番号先頭文字の部分一致を指定する

SUMIF関数の公式:=SUMIF(範囲,検索条件,合計範囲)

●範囲:$A$3:$C$12
関数コピーしたとき指定範囲をずらしたくないので絶対参照にしておく

●検索条件:"1-*"
「1-○○○」に一致させたいので「1-*」とする、また文字列扱いになるので両端を「"」で囲う

●合計範囲:C$3:$C$12
関数コピーしたとき指定範囲をずらしたくないので絶対参照にしておく

 

2 関数式は以下のようになる

「=SUMIF($A$3:$B$12,"1-*",$C$3:$C$12)」となる

18_003_SUMIF関数入力

3「1-〇〇」に一致するデータの合計点が算出される

18_004_合計算出

ここからさらに2組、3組の合計を算出したい場合は
セルF4のSUMIF関数をオートフィルでコピーして検索条件の部分だけを「"2-*"」「"3-*"」と変更すればOK。

注意する点

関数式内で文字列を指定する場合は使用する関数に関わらず必ず「"(半角ダブルクォーテーション)」で囲うこと。

囲わないと以下のようにエラーとなります。

18_005_入力誤りに注意

 

この記事を見ている人におすすめベストセラー

 

COUNTIF関数でデータの個数を数える

「*」を使って一致したデータの個数を求めていきます。

Excel操作方法

例:クラスが1組の人の合計人数をカウントしたい
(A列の学生番号で先頭文字が「1-」となっているのが1組)

18_006_COUNTIF関数の例_

その人が何組に属しているのかクラスを判別するため "キー" となるのが「1-」など学生番号の先頭文字なので、COUNTIFの「検索条件」に学生番号先頭文字の部分一致を指定すればOK!

1セルF4にCOUNTIF関数を入力していく
検索条件は「*」を使って学生番号先頭文字の部分一致を指定する

COUNTIF関数の公式:=COUNTIF (範囲, 検索条件)

●範囲:$A$3:$A$12
下段へ関数コピーしたときに指定範囲をずらさないために絶対参照にしておく

検索条件:"1-*"
「1-○○○」に一致させたいので「1-*」とする、また文字列扱いになるので両端を「"」で囲う

2関数式は以下のようになる

=COUNTIF($A$3:$A$12,"1-*")

18_007_COUNTIF関数入力_

3「1-〇〇」に一致するデータの合計個数が算出される
18_008_合計人数の算出_

ここからさらに2組、3組の学生人数も算出したい場合は
セルF4のCOUNTIF関数式をオートフィルコピーしてそれぞれ検索条件の部分だけを「"2-*"」「"3-*"」と変更すればOK。

VLOOKUP関数で一致データと同じ行にあるデータを取り出す

「*」を使って一致したデータの隣接データを引っぱり出してきます。

Excel実践編

例:セルF4に名字だけを入力して一致する人物の得点を取り出してきたい
(名前の・以降の部分を名字とする)
18_009_VLOOKUP関数の例

名字だけを一致させて人物を特定したいので、VLOOKUPの「検索値」で名前の後半部分のみの一致を指定すればOK。

1セルF4にVLOOKUP関数式を入力していく

VLOOKUP関数の公式:=VLOOKUP(検索値, 範囲, 列番号, 検索方法)

●検索値:"*イェーガー"
「○○○イェーガー」に一致させたいので「*イェーガー」とし、また文字列扱いになるので両端を「"」で囲う

●範囲:$B$3:$C$12
関数をコピーしたときに範囲をずらしたくないので絶対参照にしておく

●列番号:2
範囲のうち取り出したいデータは2列目

●検索方法:0
完全一致で検索したいので「0」もしくは「FALSE」と記述

 

2関数式は以下のようになる

=VLOOKUP("*イェーガー",$B$3:$C$12,2,0)

18_010_VLOOKUP関数の入力_

3「〇〇イェーガー」に一致するデータの得点が取り出されました

18_011_一致データの算出_

ここからさらにスミスさん、ブラウンさんの得点も取り出したい場合は
セルF4のCOUNTIF関数式をオートフィルコピーしてそれぞれ検索値の部分だけを「"*スミス"」「"*ブラウン"」と変更すればOK。

 

このやり方でもOK

上の例では、VLOOKUPの検索値に直接「指定したい文字列」を組み込んで処理しましたが、セル番号を指定する方法でもOKです。

例えば、セルE4に「*イェーガー」と入力しておいて、セルF4のVLOOKUP関数では「=VLOOKUP(E4,$B$3:$C$12,2,0)」と入力する方法です。そうするとセルE4に入った文字列を検索値として計算してくれます。

関数式内に文字列を組み込んでいるわけではないので、この場合「"」で囲う必要はありません。

18_012_もう1つの方法_


 

CASE2:Excel関数式のワイルドカード「?(半角クエスチョンマーク)」の使い方

ワイルドカード「?」が示す意味合いをおさらい

「?(半角クエスチョンマーク)」の役割

「?」・・・「任意の1文字」を示す
なんの文字でもいいので1文字と置き換えることができる

1文字なら「?」2文字なら「??」と置き換えたい文字数分重ねて使うことで何文字でも指定することができる
(字数に限らずすべての文字・スペースにも一致)

 

例)「?ねこ」で検索する
➔「こねこ」など「〇ねこ(ねこの前は1文字に限る)」に一致

例)「1???」で検索する
➔「1234」や「1010」など「1〇〇〇(1の後は3文字に限る)」に一致

「*」とは違い0文字には一致しないので「ねこ」「1」「12」「123」には一致しません。

「?」の個数分の文字列にしか一致しないので注意しましょう。

 

SUMIF関数で合計値を求める

「?」を使って一致したデータの合計値を求めていきます。

Excel実践編

例:セルF5にクラス1組の合計得点を算出したい
(A列の学生番号で先頭文字が「1-」となっているのが1組)
18_013_SUMIF関数の例

クラスを判別するため "キー" が学生番号の先頭文字なので、SUMIFの「検索条件」に「1-」の部分一致を指定。さらに末尾は3ケタなので3つ「???」を重ねればOK!

1F4にSUMIF関数を入力していく

検索条件には、「?」を使って学生番号先頭文字の部分一致を指定する

SUMIF関数の公式:=SUMIF(範囲,検索条件,合計範囲)

●範囲:$A$3:$C$12
関数コピーしたとき指定範囲をずらしたくないので絶対参照にしておく

●検索条件:"1-???"
「1-○○○(-以降は3文字)」に一致させたいので「1-???」とする、また文字列扱いになるので両端を「"」で囲う

●合計範囲:C$3:$C$12
関数コピーしたとき指定範囲をずらしたくないので絶対参照にしておく

2関数式は以下のようになる

「=SUMIF($A$3:$B$12,"1-???",$C$3:$C$12)」

18_014_SUMIF関数の入力

3クラス「1-???」に一致するデータの合計点が算出されました

18_015_合計算出

ここからさらに1組、2組の合計得点も出したい場合は
セルF4のSUMIF関数式をオートフィルコピーしてそれぞれ検索条件を「"2-???"」「"3-???"」と変更すればOK。

 

またこれは「*」とは違い、「1-○○○」と任意の3文字を指定するものなので、A列データの末尾がすべて3ケタであるゆえに使えます。

例えば「1-0001」のように末尾が4ケタのデータが含まれる場合には「"1-???"」という指定の仕方はできないので注意しましょう!




 

COUNTIF関数でデータの個数を数える

「?」を使って一致したデータの個数を求めていきます。

Excel実践編

例:クラスが1組の人の合計人数をカウントしたい
(A列の学生番号で先頭文字が「1-」となっているのが1組)
18_016_COUNTIF関数の例

クラスを判別するため "キー" が学生番号の先頭文字なので、COUNTIFの「検索条件」に「1-」の部分一致を指定。さらに学生番号の末尾は3ケタなので3つ「???」を重ねればOK!

1セルF4にCOUNTIF関数を入力していく
検索条件には、「?」を使って学生番号先頭文字の部分一致を指定する

COUNTIF関数の公式:=COUNTIF (範囲, 検索条件)

●範囲:$A$3:$C$12
関数コピーしたとき指定範囲をずらしたくないので絶対参照にしておく

●検索条件:"1-???"
「1-○○○(-以降は3文字)」に一致させたいので「1-???」とする、また文字列扱いになるので両端を「"」で囲う

2関数式は以下のようになる

=COUNTIF($A$3:$A$12,"1-???")

18_017_COUNTIF関数の入力

3クラス「1-???」に一致するデータの個数が算出されました

18_018_人数の算出

この場合も学生番号が「-」以下がすべて3文字のデータであるゆえに使えることを注意しましょう。

 

ここからさらに2組、3組の学生人数も算出したい場合は
セルF4のCOUNTIF関数式をオートフィルコピーしてそれぞれ検索条件の部分だけを「"2-???"」「"3-???"」と変更すればOK。

 

VLOOKUP関数で一致データと同じ行にあるデータを取り出す

「?」を使って一致したデータの隣接データを引っぱり出してきます。

ここにタイトル

例:文字の一部だけを指定して得点を取り出してきたい
18_019_VLOOKUP関数の例

この場合、苗字だけを一致させてデータを取り出ししたいのですが「同じ苗字」もいるため少し工夫が必要です。

同じ苗字でも名前の文字数が違うのでそこを判別すればOK。
「リヴァイ・」は5文字なので、VLOOKUPの検索値を「?????」と?を5つ重ねて指定することで条件被りを避けられる。

1セルF4にVLOOKUP関数式を入力していく

VLOOKUP関数の公式:=VLOOKUP(検索値, 範囲, 列番号, 検索方法)

●検索値:"?????アッカーマン"
「〇〇〇〇〇アッカーマン」に一致させたいので「?」を5つ重ねて、また文字列扱いになるので両端を「"」で囲う

●範囲:$B$3:$C$12
関数をコピーしたときに範囲をずらしたくないので絶対参照にしておく

●列番号:2
範囲のうち取り出したいデータは2列目

●検索方法:0
完全一致で検索したいので「0」もしくは「FALSE」と記述

 

2関数式は以下のようになる

=VLOOKUP("?????アッカーマン",$B$3:$C$12,2,0)

18_020_VLOOKUP関数の入力
18_021_VLOOKUP関数の入力_2

3「?????アッカーマン」に一致するデータの得点が取り出されました

18_022_一致データの算出

「?」の個数によって一致させるデータを工夫できるので便利ですが、?に置き換わる文字がないデータには一致しないので注意しましょう。

例)「?ねこ」 ⇒ 「こねこ」には一致するが「ねこ」には一致しない




 

以上、Excel関数でのワイルドカードの使い方でした。

「*(半角アスタリスク)」と「?(半角クエスチョンマーク)」では定義が異なるので、
状況にあわせて使い分けてみてくださいね!