
Googleスプレッドシートのワイルドカードを使って、あいまい検索する方法をご紹介します。条件をセル参照にする場合のワイルドカードの指定方法や、正規表現を使用した文字列の置換方法についても解説しているので、ぜひ参考にしてみてください。
ワイルドカードの使い方
ワイルドカードは全部で3種類あり、これらは、VLOOKUP、COUNTIF、SUMIFといった「条件」を指定する関数で役立ちます。今回は、SUMIF関数を使って、具体的な使い方を解説します。
アスタリスク(*)の使い方

アスタリスク(*)は、任意の0個以上の文字を表します。
たとえば、「PDF」という文字列を含むセルの容量を合計したい場合、数式は次のようになります。
例:=SUMIF(A2:A5,"*PDF*",B2:B5)
【ポイント】
- 0個以上の文字なので、前後に文字がなく、PDF単体でも一致とします。
- 条件全体を、二重引用符 (
"") で囲みます。
SUMIF関数の引数:(範囲, 条件, [合計範囲])
PDFで始まる文字列の場合
例:=SUMIF(A2:A5,"PDF*",B2:B5)
PDFで終わる文字列の場合
例:=SUMIF(A2:A5,"*PDF",B2:B5)
疑問符(?)の使い方

疑問符(?)は、任意の1文字を表します。
たとえば、「PDF」の直前に任意の2文字があるセルを検索したい場合、数式は次のようになります。
例:=SUMIF(A2:A5,"??PDF",B2:B5)
【ポイント】
?1個につき1文字なので、 文字数まで厳密に指定したい場合に使います。
PDFで始まる合計5文字の場合
例:=SUMIF(A2:A5,"PDF??",B2:B5)
チルダ(~)の使い方

チルダ(~)は、*や?の直前に置くことで、ワイルドカードの効果を無効にします。
たとえば、「?」を含むセルを検索したい場合、数式は次のようになります。
例:=SUMIF(A2:A5,"*~?*",B2:B5)
【ポイント】
~?とすることで、本来ワイルドカードである疑問符(?)の効果を打ち消し、単に?という文字が含まれているかどうかを判断します。
ワイルドカードとセル参照を組み合わせる

条件をセル参照したい場合、セル参照とワイルドカードを&で結合します。
たとえば、「PDF」という文字列で始まるセルを検索したい場合、数式は次のようになります。
例:=SUMIF(A2:A5,D2&"*",B2:B5)
【ポイント】
- ワイルドカードの部分(
"*")のみを二重引用符("")で囲み、セル参照(D2)は囲みません。
ワイルドカードを使った置換
特定のパターンに一致する文字列を置き換えたい場合、ワイルドカードの上位互換のような機能である正規表現を使用します。
検索と置換機能を使う
例1.すべての文字列を空白に置換する

対象の範囲を選択し、Ctrl+Hを押して「検索と置換」を開きます。

検索欄に.*を入力し、置換後の文字列は空白のままにします。「正規表現を使用した検索」にチェックを入れて「すべて置換」をクリックします。
【ポイント】
.*:任意の1文字を示す.と、その繰り返しを示す*を組み合わせることで、すべての文字を対象とするパターンを表します。
例2.括弧内の文字列を空白に置換する

対象の範囲を選択し、Ctrl+Hを押して「検索と置換」を開きます。

検索欄に\(.*\)を入力し、「正規表現を使用した検索」にチェックを入れて「すべて置換」をクリックします。
【ポイント】
\(.*\):(で始まり、任意の文字列が続き、)で終わるパターンを表します。\:()は正規表現で「グループ化」の意味を持つため、()を単純に文字として検索したい場合に、直前に\を付けてエスケープします。.*:任意の文字(.)が0回以上(*)続くパターン、つまり括弧の中のすべての文字列を対象とします。
例3.数字以外の文字列を空白に置換する

対象の範囲を選択し、Ctrl+Hを押して「検索と置換」を開きます。

検索欄に\Dを入力し、「正規表現を使用した検索」にチェックを入れて「すべて置換」をクリックします。
【ポイント】
\D:数字ではない文字すべてを表します。
関数を使う
例1.特定のパターンに一致する文字を置換する

REGEXREPLACE関数は、文字列の中から特定のパターンに一致する部分を検索し、別の文字列に置き換えます。
たとえば、xで始まる任意の3文字をYに置換したい場合、数式は次のようになります。
例:=REGEXREPLACE(A2,"x..","Y")
【ポイント】
.は任意の1文字を表すため、x..はxで始まる合計3文字を表します。
REGEXREPLACE関数の引数:(テキスト, 正規表現, 置換後の文字列)
例2.括弧内の文字列を空白に置換する

括弧を含む括弧内の文字を空白("")に置換したい場合、数式は次のようになります。
例:=REGEXREPLACE(A2,"\(.*\)","")
【ポイント】
\(.*\):(で始まり、任意の文字列が続き、)で終わるパターンを表します。\:()は正規表現で「グループ化」の意味を持つため、()を単純に文字として検索したい場合に、直前に\を付けてエスケープします。.*:任意の文字(.)が0回以上(*)続くパターン、つまり括弧の中のすべての文字列を対象とします。
例3.数字以外の文字列を空白に置換する

数字以外のすべての文字を空白("")に置換したい場合、数式は次のようになります。
例:=REGEXREPLACE(A2,"\D","")
【ポイント】
\D:数字ではない文字すべてを表します。
その他の正規表現については、「正規表現の基本と3つの活用」の記事をご覧ください。
よくある質問
-
IF関数でワイルドカードを使えますか?
-
使えません。IF関数でワイルドカードのような「あいまい検索」をしたい場合は、条件式でCOUNTIF関数や、正規表現を使うREGEXMATCH関数を組み合わせます。(詳細記事はこちら)
-
XLOOKUP関数でワイルドカードを使えますか?
-
使えます。XLOOKUP関数でワイルドカードを使いたい場合、第5引数(一致モード)に
2を指定します。(詳細記事はこちら)
-
FILTER関数でワイルドカードを使えますか?
-
使えません。FILTER関数でワイルドカードのような「あいまい検索」をしたい場合は、条件式でSEARCH関数や、正規表現を使うREGEXMATCH関数を組み合わせます。(詳細記事はこちら)