Excelで「特定の文字列を含むかどうか」を調べたいとき、どの関数を使えばよいか迷ったことはないでしょうか。
実は、Excelには文字列検索や部分一致に対応した関数が複数用意されており、目的に応じて使い分けることが大切です。
本記事では、FIND・SEARCH・COUNTIF・IF・SUMIFといった代表的な関数から、VBAのInStrやLikeまで、「含む」に関する関数の使い方をわかりやすく解説していきます。
ぜひ参考にしてみてください。
含むの関数は?ExcelでのFIND・SEARCH・COUNTIFなどの使い方も!(FIND・SEARCH・COUNTIF・IF・SUMIF・VBA・InStr・Like・文字列検索・部分一致など)
それではまず、「含む」を判定するためにExcelでよく使われる関数の全体像について解説していきます。
Excelで「特定の文字列を含むかどうか」を調べる代表的な方法は、大きく分けてワークシート関数を使う方法とVBAを使う方法の2つです。
ワークシート関数では、FIND・SEARCH・COUNTIF・IF・SUMIFなどが活躍します。
VBAを使う場合は、InStr関数やLike演算子が主な選択肢となるでしょう。
「含む」を判定する際は、大文字・小文字の区別が必要かどうか、また数値の合計や件数を求めたいのかなど、目的に応じて関数を選ぶことが重要です。
それぞれの関数には得意とする場面があるため、まずは全体像を把握しておくと実務での活用がスムーズになります。
| 関数・機能 | 主な用途 | 大文字小文字の区別 |
|---|---|---|
| FIND | 文字列の位置を検索 | 区別する |
| SEARCH | 文字列の位置を検索 | 区別しない |
| COUNTIF | 条件に合うセルを数える | 区別しない |
| IF+FIND/SEARCH | 含む場合に処理を分岐 | 組み合わせ次第 |
| SUMIF | 条件に合う値を合計 | 区別しない |
| VBA(InStr・Like) | マクロでの文字列検索 | 設定による |
FIND関数・SEARCH関数で「含む」を検索する方法
続いては、FIND関数とSEARCH関数を使った文字列検索の方法を確認していきます。
どちらも指定した文字列が何文字目にあるかを返す関数で、文字が見つかれば数値が、見つからなければエラーが返ります。
FIND関数の基本的な使い方
FIND関数は、大文字と小文字を区別して文字列を検索します。
FIND(検索文字列, 対象, [開始位置])
例:=FIND(“東京”, A1)
→ A1セルに「東京」が含まれる場合、その開始位置(文字数)を返します。
「含むかどうか」だけを知りたい場合は、IFERRORと組み合わせて使うのが一般的な方法です。
SEARCH関数との違いとは
SEARCH関数はFINDと似ていますが、大文字・小文字を区別しない点が大きな違いです。
また、ワイルドカード(「?」や「*」)が使えるため、あいまいな検索にも対応できます。
SEARCH(検索文字列, 対象, [開始位置])
例:=SEARCH(“tokyo”, A1)
→ 「Tokyo」や「TOKYO」なども一致として検出されます。
IFERRORと組み合わせた実用的な書き方
FINDやSEARCHは、文字が見つからないとエラーになります。
そのため、IFERRORと組み合わせることでエラーを防ぎながら「含む」を判定できます。
例:=IFERROR(FIND(“東京”, A1), 0)
→ 「東京」が含まれれば位置の数値、含まれなければ0を返します。
COUNTIF・IF・SUMIFで「含む」を条件にする方法
続いては、COUNTIF・IF・SUMIFを使った部分一致の条件設定を確認していきます。
これらの関数は、ワイルドカードを使った部分一致に対応しており、特定の文字を含むセルを数えたり合計したりする際に非常に便利です。
COUNTIFで部分一致のカウントをする
COUNTIFでは、検索条件に「*(アスタリスク)」を使ったワイルドカード指定が可能です。
例:=COUNTIF(A1:A10, “*東京*”)
→ A1からA10の範囲で「東京」を含むセルの件数を返します。
シンプルかつ強力な方法で、件数を素早く把握したいときに最適でしょう。
IF関数で「含む場合」に処理を分岐させる
IF関数単体では部分一致の判定ができないため、COUNTIFやFINDと組み合わせるのが定番の書き方です。
例:=IF(COUNTIF(A1, “*東京*”), “含む”, “含まない”)
→ A1に「東京」が含まれれば「含む」、そうでなければ「含まない」と表示します。
SUMIFで「含む」セルの合計を求める
SUMIFも同様に、ワイルドカードを使った部分一致の条件指定が可能です。
例:=SUMIF(A1:A10, “*東京*”, B1:B10)
→ A列に「東京」を含む行のB列の値を合計します。
売上集計や在庫管理など、特定のキーワードを含む行だけを集計したい場面で大活躍する関数です。
VBAのInStr・Likeで「含む」を判定する方法
続いては、VBAを使った文字列検索の方法を確認していきます。
マクロを活用することで、より柔軟で高度な「含む」判定が実現できます。
InStr関数の使い方
InStr関数は、VBAで文字列の位置を返す関数で、Excelのシート関数におけるFINDに相当します。
InStr([開始位置,] 文字列1, 文字列2 [, 比較モード])
例:If InStr(1, strValue, “東京”) > 0 Then
→ strValueに「東京」が含まれていれば条件を満たします。
比較モードをvbTextCompareに設定すると、大文字・小文字を区別しない検索が可能になります。
Like演算子による柔軟なパターンマッチング
Like演算子は、ワイルドカードを使ったパターンマッチングに対応したVBAならではの便利な機能です。
例:If strValue Like “*東京*” Then
→ strValueに「東京」が含まれていれば処理を実行します。
COUNTIFのワイルドカード指定に近い感覚で使えるため、直感的でわかりやすい書き方といえるでしょう。
InStrとLikeの使い分けポイント
InStrは位置(数値)を返すため「何文字目に含まれるか」を知りたいときに向いており、Likeはパターンマッチングに特化しているため「含むかどうかだけ判定したい」ときに向いています。
場面に応じてInStrとLikeを使い分けることで、VBAコードがより読みやすくなります。
複雑な条件分岐が必要なケースでは、InStrの数値結果を活用するとより細かい制御が可能になるでしょう。
まとめ
本記事では、Excelで「含む」を判定するための関数と使い方について解説しました。
FIND・SEARCHは文字列の位置を返し、COUNTIF・SUMIF・IFはワイルドカードを活用した部分一致の条件指定が得意です。
VBAではInStr・Likeを使うことで、より柔軟な文字列検索が実現できます。
目的や用途に合った関数を選ぶことが、Excelを効率的に活用するうえでの大切なポイントといえるでしょう。
ぜひ本記事を参考に、「含む」に関する関数をうまく使いこなしてみてください。