Excel 文字列を比較する方法(完全一致・部分一致)

2020年10月13日

Excelには文字列が一致しているかを調べる機能が複数あります。

その機能には完全一致を調べるものと部分一致を調べる、あいまい検索があります。

これらは主にIF関数や条件付き集計関数、XLOOKUP関数VLOOKUP関数に用いるものです。

この記事では文字列比較機能のそれぞれの特徴と適切な場面を紹介します。

完全一致

比較演算子

文字列が全て一致している場合にTRUEとなります。

方法は単純に"(ダブルコーテーション)で囲んだ文字列同士を=で挿んだ数式を作ります。

=文字列1 = 文字列2

IF関数の場合の使用例です。

比較演算子のIF関数での使用例
比較演算子のIF関数での使用例

一字一句違いのない場合のみTRUEとなります。

3行目のように検査対象を含んでいたとしても異なっていると判断されてFALSEとなります。

この比較演算子は手軽に使用できますが、大文字小文字を区別しないなど

比較が厳密でない部分があるため厳密な比較を行いたい場合はEXACT関数を使用します。

EXACT関数

比較演算子とは下記の差があるのでその時々で都合のよいほうを利用します。

「半角文字の数字」と「数値」の比較・=ではデータ型が違うと別と判定
EXACT関数では数値が一緒であれば同じと判定
アルファベットの大文字と小文字・=では大文字と小文字を区別しない
EXACT関数では大文字と小文字を区別する
EXACT関数と=の動作の違い

EXACT関数はこのように使用します。

=EXACT(文字列1,文字列2)

下記がEXACT関数の結果例と比較演算子の結果との対比です。

EXACT関数の実行結果の例と=(イコール)による比較との違い
EXACT関数の実行結果の例と=(イコール)による比較との違い

部分一致の例

先述の例の含むパターン(部分一致)や

前方一致(先頭が一致)、後方一致(末尾が一致)の場合、

ワイルドカードという特殊な文字で数式を作ります。

ワイルドカード

意味のある特殊な文字を使う方式です。

主に条件付き集計関数、 XLOOKUP関数VLOOKUP関数に使用します。

IF関数にはそのままでは使えません(後述)。

このワイルドカードには下記のものがあります。

文字読み方用途
*アスタリスク同じ位置の任意の数の文字列
?クエスチョン同じ位置の任意の1文字
~チルダアスタリスクとクエスチョンを通常の文字として扱う
ワイルドカードの一覧

条件付き集計関数やVLOOKUP関数での使用例

?は任意の文字数が何文字かを明確に指定したい場合に使用します。

逆に文字数を特定しない場合は*を使用します。

これによりVLOOKUP関数や条件付き集計関数であいまい検索を実現できます。

(XLOOKUP関数では一致モードを変更する必要があります)

比較方法数式例
部分一致*文字列*
前方一致文字列*
後方一致 *文字列
ワイルドカードを使用してVLOOKUP関数で、あいまい検索を行う例
ワイルドカードを使用してVLOOKUP関数で、あいまい検索を行う例

IF関数での使用例

IF関数にはワイルドカードが使えないためワイルドカードの使えるCOUNTIF関数

間に挟むことで間接的に機能させることが可能です。

=IF(COUNTIF(検索対象,"*文字列*")>=1,"含む","含まない")

※>=1はなくても機能します。

COUNTIF関数を仲介してIF関数にワイルドカードを機能させる例
COUNTIF関数を仲介してIF関数にワイルドカードを機能させる例

FILTER関数の場合

FILTER関数の場合、ワイルドカードが利用できないため文字列関数で対応する必要があります。

(詳細はFILTER関数の記事内

関連記事

文字列比較の具体的な活用例

VLOOKUP関数との組み合わせ

文字列操作関数との組み合わせ

集計関数との組み合わせ

マクロ・VBAを利用した高度な比文字列比較や応用例

IF系関数の使い方・活用方法の記事一覧