MATCH関数 -ワイルドカードを使用した曖昧検索- DL可
先日、MATCH関数を紹介しました。
今回は、MATCH関数の応用編で、ワイルドカードを使用したMATCH関数の例を解説します。
ワイルドカードを使用することで、曖昧検索が可能となるというわけです。
目次
ワイルドカードとは
ワイルドカードは、正規表現の一種であり、文字列のパターンマッチングに使用されます。
ワイルドカードを使用することで、曖昧な文字列の検索も可能になります
正規表現とは
正規表現 (Regular Expression) は、文字列にマッチするパターンを表現するために使われる言語のことです。
正規表現を使うことで、文字列内に特定のパターンが含まれているかどうかを確認したり、文字列の抽出、置換、分割などを行うことができます。
正規表現は、プログラミング言語やテキストエディタなど多くのソフトウェアに組み込まれています。
正規表現とワイルドカードの関係
ワイルドカードには、「*」や「?」などの記法がある
- 「?」は、任意の一文字に一致することを示す
- 「*」は、「任意の文字列」を示す。「?」が任意の一文字であるのに対して、「*」は文字数制限がない
- 意訳すれば「0文字」から「任意の文字数」まで一致することができる
では、ワイルドカードの検索とは
- ワイルドカードを使用しない場合は、完全一致検索
- ワイルドカードを使用した場合は、曖昧検索
関数式の記法
=MATCH("*hello", A1:A10, 0)
「A1:A10」の中から「hello」という文字列が含まれているものを検索します。
検索する文字列にワイルドカードを含めて記載する必要があります。
そもそも、MATCH関数に関する基礎知識は『MATCH関数の構文-データをマッチング-』をご確認ください。
ワイルドカードの * を使用したMATCH関数の例
部分一致の検索
「A1:A10」に含まれる「hello」を含む文字列を検索したい場合、次のように記載します。
戻り値=1のセルが一致した例文です。
例えば、
「新しい上司にhelloと言ってください。」
「このプロジェクトについての説明をお願いしますhello」
「私たちは今日のミーティングを終えましたhello」「hello、世界!」などです。
「hello」も一致します。
一方、
「今日の天気は晴れです。」
「私は明日の会議は出席します。」
は一致しません。
下記は上記コードをコピー用に記載しただけです。
=MATCH("*hello*",A1,0)
=MATCH("*hello*",A2,0)
=MATCH("*hello*",A3,0)
=MATCH("*hello*",A4,0)
=MATCH("*hello*",A5,0)
=MATCH("*hello*",A6,0)
=MATCH("*hello*",A7,0)
=MATCH("*hello*",A8,0)
=MATCH("*hello*",A9,0)
=MATCH("*hello*",A10,0)
前方一致の検索
「A1:A10」に含まれる「hello」で始まる文字列を検索したい場合、次のように記載します。
戻り値=1のセルが一致した例文です。
例えば、
「hello、世界!」
「hello」は一致します。
一方、
「このプロジェクトについての説明をお願いしますhello」
「会議は明日午前10時から始まりますhello」
などは一致しません。
下記は上記コードをコピー用に記載しただけです。
=MATCH("hello*",A1,0)
=MATCH("hello*",A2,0)
=MATCH("hello*",A3,0)
=MATCH("hello*",A4,0)
=MATCH("hello*",A5,0)
=MATCH("hello*",A6,0)
=MATCH("hello*",A7,0)
=MATCH("hello*",A8,0)
=MATCH("hello*",A9,0)
=MATCH("hello*",A10,0)
後方一致の検索
「A1:A10」に含まれる「hello」で終わる文字列を検索したい場合、次のように記載します。
戻り値=1のセルが一致した例文です。
例えば、
「このプロジェクトについての説明をお願いしますhello」などです。
「hello」
なども一致します。
一方、
「新しい上司にhelloと言ってください。」
「hello、世界!」
などは一致しません。
下記は上記コードをコピー用に記載しただけです。
=MATCH("*hello",A1,0)
=MATCH("*hello",A2,0)
=MATCH("*hello",A3,0)
=MATCH("*hello",A4,0)
=MATCH("*hello",A5,0)
=MATCH("*hello",A6,0)
=MATCH("*hello",A7,0)
=MATCH("*hello",A8,0)
=MATCH("*hello",A9,0)
=MATCH("*hello",A10,0)
完全一致の検索
「A1:A10」に含まれる「hello」という文字列を完全一致で検索したい場合、ワイルドカードを含めずに次のように記載します。
「A10」の「hello」のみ、一致します。
下記は上記コードをコピー用に記載しただけです。
=MATCH("hello", A1:A10, 0)
最後に
このように、ワイルドカードを使用することで、曖昧な文字列の検索も可能になります。
MATCH関数を使用することで、データの抽出や検索を効率的に行うことができます。
この記事では、ワイルドカードを使用したMATCH関数の例を紹介しましたが、
ワイルドカードを使用した例は、MATCH関数だけでなく、いくつも存在します。
基本は上記の考えを応用すればいいだけです。追々、取り上げていきたいと考えています。
- VLOOKUP関数:値を検索するために列内の検索を行います。
- INDEX関数:指定された位置にある値を返します。
- HLOOKUP関数:行内の検索を行い、値を検索します。
- IF関数:特定の条件に基づいて値を返すために使用されます。
- SUMIF関数:特定の条件に一致する値の合計を返すために使用されます。
これらの関数は、いずれもExcel関数の中でも使用頻度が高い関数の一つですので、是非使用してみてください。
解答付きサンプルデータ
解答付きサンプルデータが欲しい方は、下記からダウンロードしてください。
なお、オリジナルデータから一部改変しています。
参考記事:
Excel関数を操作するための基本概念です。基本概念を理解すると、各関数の理解がより深まります。
構文に関する記事
Excel関数の引数と戻り値は何だっけ?という時に、役立つ記事です。
ダイアログボックスの使い方に関する記事
Excel関数名は何だっけ?VLOOKUP関数の使い方は何だっけ?という時に、ダイアログボックスを使うと便利です。
下記はそのダイアログボックスに関する記事です。
参照形式に関する記事
関数式をコピーする時はどうしたらいい? $マークは、どう付けたらいいだろう?
といった悩みをお持ちの方は以下をご覧ください。