Menu

Excelのワイルドカード: COUNTIFやVLOOKUPでの*、?、~

Excelの条件では、*は任意の数の文字を、?はちょうど1文字を表します。=COUNTIF(A2:A7,"*apple*")はappleを含むセルを数えます。~はワイルドカードを普通の文字に戻します。

このページのシートはすべて実際に動きます。数値や数式を変えると再計算されます。

Excelには、条件や検索で使えるワイルドカード文字が3つあります。*は任意の数の文字(0文字を含む)に、?はちょうど1文字に一致し、~は次の*や?を普通の文字に戻します。=COUNTIF(A2:A7,"*apple*")は、どこかにappleを含むセルを数えます。

ワイルドカードで数える
D2
ABCD
1ProductPatternCount
2Apple juice*apple*4
3Green appleapple*2
4Pineapple*juice2
5Orange juice?????0
6Pear*e4
7Apples
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。
  • *apple*はappleを含むもので、Pineappleも数えるので4件一致します。
  • apple*はappleで始まるもので、Apple juiceとApplesだけです。COUNTIFは大文字と小文字を区別しません。
  • *juiceはjuiceで終わるものです。
  • ?????はちょうど5文字のものです。5文字の商品はないので0ですが、A6にPeachと入力すると1になります。
  • *eはeで終わるものです。

C列に*an*やP*のような自分のパターンを入力すると、件数が更新されます。

VLOOKUPとXLOOKUPでの部分一致

VLOOKUPは完全一致モード(最後の引数がFALSE)でワイルドカードを受け付けます。数式の中で値にワイルドカードをつなぐので、D2には最初の数文字だけを入力します:

最初の数文字で検索する
E2
ABCDE
1ProductPriceStarts withPrice
2Apple juice3.5Pin4
3Green apple1.24
4Pineapple4
5Orange juice3.2
6Pear0.9
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

どちらの数式もPineappleを見つけます。D2をjuiceに変えてみてください。VLOOKUPのパターンjuice*はjuiceで始まる文字列を求めるので#N/Aを返し、XLOOKUPのパターン*juice*はそれを含む最初の商品、Apple juiceを見つけます。ほかの完全一致と同じく、ワイルドカードの検索は条件に合う最初の行を返すので、パターンは十分に具体的にしてください。

XLOOKUPが*と?をワイルドカードとして扱うのは、5つ目の引数match_mode(一致モード)が2のときだけです。指定しないと、アスタリスクそのものを探します。MATCHはmatch_typeが0のとき、XMATCHはXLOOKUPと同じくmatch_modeが2のときにワイルドカードを受け付けます。そのほかの引数についてはVLOOKUPを参照してください。

phoneの商品を数える
D2
ABCD
1ProductPhone products
2Smartphone
3Headphones
4Phone stand
5Laptop bag
6Charger
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

やってみよう: D2で、名前のどこかにphoneを含む商品の数を数えてください。

ワイルドカードで合計・平均する

条件を受け取る関数はどれも同じように条件を読むので、同じパターンがSUMIF、SUMIFS、AVERAGEIF、AVERAGEIFS、MAXIFS、MINIFSでも使えます:

名前の一部で合計する
E2
ABCDE
1RegionSalesPatternTotal
2North-East120North*285
3North-West95*West155
4South80?????150
5South-West60
6East110
7North70
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

*は0文字にも一致するので、North*はNorth自体も含めてNorthで始まるすべての地域を合計します。?????はちょうど5文字の地域、SouthとNorthを合計します。

West地域すべての売上
E2
ABCDE
1RegionSalesWest total
2North-East120
3North-West95
4South80
5South-West60
6East110
7North70
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

やってみよう: E2で、名前がWestで終わるすべての地域の売上を合計してください。

~で本物のアスタリスクや疑問符を探す

本当の*や?を含む文字列を数えるには、その前にチルダを付けます。チルダ自体は~~と書きます。

ワイルドカードを普通の文字にする
C2
ABC
1NoteCount
2Rated 5*1
3Why?1
4Done4
55 stars
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

C2はアスタリスクそのものを含むセル(A2だけ)を、C3は疑問符を含むセルを数えます。C4は逆の例です。"*"だけだと任意の文字列に一致するので、文字列のセルをすべて数え、ここでは4になります。数値と空のセルは数えないので、COUNTIF(range,"*")は文字列のセルを数える定番の方法です。

ワイルドカードが使える関数

*、?、~が使える使えない
COUNTIF、COUNTIFS、SUMIF、SUMIFS、AVERAGEIF、AVERAGEIFS、MAXIFS、MINIFS=、<>などの比較
FALSEを指定したVLOOKUPとHLOOKUPIF単独
0を指定したMATCHFIND
match_modeが2のXLOOKUPとXMATCHFILTER、UNIQUE、SORT
SEARCHSUBSTITUTE、TEXTBEFORE、TEXTAFTER
検索と置換(Ctrl+H)、フィルターの検索ボックス

SEARCHは数式の中でワイルドカードを受け付けます。Excelでは=SEARCH("b?d","a bad day")は3を返します(詳しくはFINDとSEARCH)。FILTERでは、パターンの代わりにISNUMBER(SEARCH(...))を条件にします。

よくある間違い: =の後のワイルドカード

=演算子はワイルドカードを読みません。=A2="*apple*"は、A2が7文字の*apple*かどうかを尋ねています。ExcelでA2がGreen appleのとき:

=A2="*apple*"                    FALSE
=IF(A2="*apple*","yes","no")     no

代わりに、1つのセルに対して1か0を返すCOUNTIFで判定するか、SEARCHを使います:

1つのセルをワイルドカードで判定する
B2
ABC
1ProductCOUNTIF testSEARCH test
2Green applecontains applecontains apple
3Pearnono
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

IFはCOUNTIFの1をTRUE、0をFALSEとして扱います。SEARCHはもともとセルのどこにある文字列でも探すので、SEARCHの方法ではワイルドカードはまったく要りません。

よくある質問

Excelのワイルドカード文字には何がありますか?

*は0文字を含む任意の数の文字に、?はちょうど1文字に一致します。*、?、~の前に~を付けると、普通の文字になります。"*apple*"はappleを含む、"A*"はAで始まる、"???"はちょうど3文字、という意味です。

VLOOKUPでワイルドカードを使うには?

検索値にワイルドカードをつなぎ、完全一致を指定します。=VLOOKUP(E2&"*",A2:B6,2,FALSE)はE2で始まる最初の項目を見つけます。XLOOKUPではmatch_modeを2にします:=XLOOKUP("*"&E2&"*",A2:A6,B2:B6,"none",2)。

IFの数式でワイルドカードが効かないのはなぜですか?

=による比較はワイルドカードを理解しないので、=IF(A2="*apple*",...)は文字列*apple*そのものにしか一致しません。=IF(COUNTIF(A2,"*apple*"),"Yes","No")か=IF(ISNUMBER(SEARCH("apple",A2)),"Yes","No")を使います。

アスタリスクを含むセルを数えるには?

前にチルダを付けます:=COUNTIF(A2:A10,"*~**")。最初と最後の*はワイルドカードで、~*がアスタリスクそのものです。

Coddyのプログラミング言語のイラスト

Coddyでコードを学ぼう

始める