Excel 文字列比較の完全ガイド:完全一致・部分一致の効率的な方法と活用
Excelでデータ管理や分析を行う際、文字列の比較は頻繁に発生する作業です。例えば、顧客リストの名寄せや商品コードの照合、進捗状況の確認など、正確な文字列比較は業務効率を大きく左右します。
Excelには、文字列が完全に一致するか、あるいは一部が一致するか(部分一致・あいまい検索)を効率的に調べるための複数の機能が備わっています。
これらの機能は、主にIF関数や条件付き集計関数、XLOOKUP関数、VLOOKUP関数などと組み合わせて使用することで、データの集計・抽出・照合作業を大幅に効率化します。
本記事では、Excelの文字列比較機能それぞれの特徴と、実務で役立つ具体的な使用場面を詳しく解説します。
本記事で解説するExcel文字列比較の基本と活用方法について、まずはこちらの動画で概要をご確認ください。より視覚的に理解を深めることができます。
Excelで文字列を「完全一致」で比較する方法
=(イコール)比較演算子による完全一致判定
文字列が全て一致している場合にTRUEとなります。
方法は単純に"(ダブルコーテーション)で囲んだ文字列同士を=で挿んだ数式を作ります。
=文字列1 = 文字列2
IF関数の場合の使用例です。

一字一句違いのない場合のみTRUEとなります。
3行目のように検査対象を含んでいたとしても異なっていると判断されてFALSEとなります。
この比較演算子は手軽に使用できますが、大文字小文字を区別しないなど
比較が厳密でない部分があるため厳密な比較を行いたい場合はEXACT関数を使用します。
EXACT関数による厳密な完全一致比較
比較演算子とは下記の差があるのでその時々で都合のよいほうを利用します。
| 「半角文字の数字」と「数値」の比較 | ・=ではデータ型が違うと別と判定 ・EXACT関数では数値が一緒であれば同じと判定 |
| アルファベットの大文字と小文字 | ・=では大文字と小文字を区別しない ・EXACT関数では大文字と小文字を区別する |
EXACT関数はこのように使用します。
=EXACT(文字列1,文字列2)
下記がEXACT関数の結果例と比較演算子の結果との対比です。

Excelで文字列を「部分一致」で比較する方法:ワイルドカードの活用
含むパターン(部分一致)や
前方一致(先頭が一致)、後方一致(末尾が一致)の場合、
ワイルドカードという特殊な文字で数式を作ります。
主に条件付き集計関数、 XLOOKUP関数、VLOOKUP関数に使用します。
IF関数にはそのままでは使えません(後述)。
このワイルドカードには下記のものがあります。
| 文字 | 読み方 | 用途 |
|---|---|---|
| * | アスタリスク | 同じ位置の任意の数の文字列 |
| ? | クエスチョン | 同じ位置の任意の1文字 |
| ~ | チルダ | アスタリスクとクエスチョンを通常の文字として扱う |
条件付き集計関数、XLOOKUP、VLOOKUP関数でのワイルドカード活用例
?は任意の文字数が何文字かを明確に指定したい場合に使用します。
逆に文字数を特定しない場合は*を使用します。
これによりXLOOKUP関数やVLOOKUP関数、条件付き集計関数であいまい検索を実現できます。
(XLOOKUP関数では一致モードを変更する必要があります)
| 比較方法 | 数式例 |
|---|---|
| 部分一致 | *文字列* |
| 前方一致 | 文字列* |
| 後方一致 | *文字列 |

IF関数で部分一致を判定する方法(COUNTIF関数との組み合わせ)
IF関数にはワイルドカードが使えませんが
COUNTIF関数を間に挟むことで機能させることが可能です。
=IF(COUNTIF(検索対象,"*文字列*")>=1,"含む","含まない")
※>=1はなくても機能しますが、ある方が数式として自然な形式です。

FILTER関数の場合
FILTER関数の場合、ワイルドカードが利用できないため文字列関数で対応する必要があります。
(詳細はFILTER関数の記事内)
よくある質問(FAQ)と応用ヒント
Q1: 大文字と小文字を区別せずに文字列比較を行いたい場合はどうすればよいですか?
A1: 標準の比較演算子 = は大文字と小文字を区別しません。
例えば、="Apple"="apple" の結果は TRUE となります。もしEXACT関数で区別しない比較を行いたい場合は、あらかじめLOWER関数やUPPER関数を使って文字列を統一してから比較する方法があります。
例えば、次の数式のように使用します。
=EXACT(LOWER(文字列1), LOWER(文字列2))

Q2: 半角と全角を区別せずに文字列比較を行いたい場合はどうすればよいですか?
A2: Excelの標準機能で半角と全角を区別せずに比較する直接的な関数はありません。しかし、ASC関数(全角のカタカナ、英字、数字を半角に変換)やJIS関数(半角のカタカナ、英字、数字を全角に変換)などを利用して、比較対象の文字列の書式を統一してから比較する方法が考えられます。
例えば、次の数式のように使用します。
=EXACT(JIS(文字列1), JIS(文字列2))
ただし、極めて特殊な文字コードの揺れや、一部の環境依存文字などは対応できませんが、稀なケースです。

Q3: 特定の記号(例: ハイフン、スペースなど)を無視して文字列比較を行う方法はありますか?
A3: SUBSTITUTE関数やCLEAN関数、TRIM関数などを組み合わせて、比較前に不要な記号やスペースを削除(置換)することで対応可能です。例えば、ハイフンを削除して比較したい場合は、次の数式のように記述します。
=EXACT(SUBSTITUTE(文字列1,"-",""), SUBSTITUTE(文字列2,"-",""))
複数の記号を無視する場合は、SUBSTITUTE関数を複数回ネストして使用します。

Q4: 文字列比較の結果を使って、関連するデータを自動で抽出・集計したいです。どのような関数が適していますか?
A4:
- データの抽出: FILTER関数やXLOOKUP関数が便利です。特にFILTER関数は、指定した条件(文字列比較の結果など)に合致するデータを範囲から抽出できます。XLOOKUP関数は、一致したデータに対応する別の列の情報を効率的に取得できます。
- データの集計: SUMIF関数、COUNTIF関数、AVERAGEIF関数などの条件付き集計関数や、より柔軟なSUMIFS、COUNTIFS
、AVERAGEIFS、MINIFS、MAXIFS関数を使用します。これらは文字列比較の結果に基づいて、特定の条件を満たすデータの合計、個数、平均などを算出するのに役立ちます。
Q5: 複数の条件(AND/OR)で文字列比較を行いたい場合、どのように数式を組めばよいですか?
A5:
· AND条件(〇〇かつ△△): 複数の条件がすべて真である場合に結果を出すには、AND関数と組み合わせて使用します。
例:
=IF(AND(B2="Apple", C2="Red"), "一致", "不一致")
この例では、B2が"Apple" かつ C2が"Red"の場合に"一致"と表示されます。
· OR条件(〇〇もしくは△△): 複数の条件のいずれか一つでも真であれば結果を出すには、OR関数と組み合わせて使用します。
例:
=IF(OR(B2="Apple", B2="Orange"), "フルーツ", "その他")
この例では、B2が"Apple" もしくは B2が"Orange"の場合に"フルーツ"と表示されます。
より多くの条件や集計を伴う場合は、SUMIFSやCOUNTIFSなどの複数条件に対応する関数も活用できます。また、複数の条件分岐の結果を返す場合には、IFS関数がIF関数を複数ネストするよりも簡潔な記述を可能にします。