Excelで「セルの中に特定の文字が含まれているか調べたい」「その文字がどこにあるか知りたい」――
そんなときに役立つのが文字検索系の関数です。
たとえば次のような場面は多いでしょう。
- 「セル内に“東京”という文字が入っているかを確認したい」
- 「文章の中から“@”の位置を調べたい」
- 「一部の文字が含まれている場合だけ別の値を返したい」
- 「セルの中で特定のキーワードを検索して抽出したい」
この記事では、Excelでセル内の文字を検索・検出・抽出する関数の使い方を、
初心者にも分かりやすく、実務でも使える形で解説します。
目次
- ✅ 文字検索で使う主要関数一覧
- ✅ FIND関数でセル内の文字位置を検索する
- ・FIND関数の構文
- ・例1:単純に位置を調べる
- ・例2:文中の位置を調べる
- ・例3:途中から検索したい場合
- ✅ SEARCH関数で部分一致検索を行う
- ・SEARCH関数の構文
- ・例1:大小文字を区別せず検索
- ・例2:ワイルドカードで部分一致
- ・例3:「@」を含むメール判定
- ✅ IF関数+ISNUMBERで「文字が含まれるか」を判定する
- ・特定の文字を含むかどうか判定する構文
- ・例1:「東」が含まれていたら「該当」
- ・例2:「特定文字が入っていたら別計算」
- ✅ 部分一致で文字を抽出する方法
- ・例1:「@」以降の文字を抽出
- ・例2:「特定文字まで」の文字を抽出
- ・例3:特定文字の前の部分を取り出す
- ✅ FILTER関数で特定の文字を含む行だけ抽出(Excel 365以降)
- ・特定の文字を含む行だけを抽出する構文
- ・例:商品名に「りんご」を含む行だけ表示
- ✅ 実務で使える応用テクニック
- ・複数キーワードで検索
- ・複数条件を組み合わせて抽出(FILTER関数応用)
- ・関数だけでメールドメインを分離
- ・部分一致でエラーを回避したい場合
- ✅ 検索系関数の違いまとめ
- ✅ 文字検索のコツと注意点
- ✅ RPAやPower Automateと連携した検索自動化のヒント
- ・RPAを使用する例
- ✅ まとめ:Excel関数でセル内の文字を自在に検索しよう
✅ 文字検索で使う主要関数一覧
Excelには、セル内の文字を探すための関数が複数あります。
まずは役割の違いを整理しましょう。
関数名 | 主な用途 | 返す結果 | 大文字小文字の区別 |
---|---|---|---|
FIND | 文字列を検索して位置を返す | 数値(何文字目か) | 区別する |
SEARCH | FINDと同じだがワイルドカード対応 | 数値 | 区別しない |
IF + ISNUMBER | 検索結果を条件式として活用 | TRUE/FALSE(または任意の結果) | 組み合わせ次第 |
FILTER / TEXT関数 | 検索文字を含む行や部分文字を抽出 | 文字列・セル範囲 | 区別しない |
それぞれの特性を理解して使い分けることで、
「位置の特定」「存在判定」「抽出」まで自在に扱えます。
✅ FIND関数でセル内の文字位置を検索する
まずは基本となるFIND関数から見ていきましょう。
・FIND関数の構文
"=FIND(検索文字列, 対象セル, [開始位置])"
・説明
指定したセルの中で、検索文字列が何文字目にあるかを返します。
大文字・小文字は区別されます。
・例1:単純に位置を調べる
"=FIND("東",A2)"
A列 | 式 | 結果 |
---|---|---|
東京都新宿区 | =FIND("東",A2) | 1 |
北海道札幌市 | =FIND("東",A2) | #VALUE!(見つからない) |
「東」は1文字目にあるため、結果は「1」になります。
・例2:文中の位置を調べる
"=FIND("区",A2)"
→ 「東京都新宿区」では、「区」が7文字目にあるので「7」を返します。
・POINT
- 検索対象が見つからないと「#VALUE!」エラー
- 大文字・小文字を区別する
- 「開始位置」引数で検索開始位置を調整できる
・例3:途中から検索したい場合
"=FIND("o","Tokyo",3)"
→ 「o」を3文字目以降から検索。結果は「4」。
FIND関数は、文字の位置を数値で知りたいときに使うのが基本です。
参考:【Excel】TRIM関数とLEN関数の活用法とは?Excelで文字列処理をスマートにする便利テクニックを徹底解説
✅ SEARCH関数で部分一致検索を行う
FIND関数とほぼ同じ動きをするのがSEARCH関数です。
違いは「大文字小文字を区別しない」ことと、「ワイルドカード」が使える点です。
・SEARCH関数の構文
"=SEARCH(検索文字列, 対象セル, [開始位置])"
・例1:大小文字を区別せず検索
A列 | 式 | 結果 |
---|---|---|
Tokyo | =SEARCH("T",A2) | 1 |
tokyo | =SEARCH("T",A3) | 1(FINDでは#VALUE!になる) |
SEARCHは「T」も「t」も同じ扱いです。
・例2:ワイルドカードで部分一致
"=SEARCH("東*",A2)"
「東」で始まる文字列(例:東京都・東京駅など)を検索可能。
ワイルドカードには次の2種類があります。
記号 | 意味 | 例 |
---|---|---|
* | 任意の文字列 | "東*" → 東で始まるすべての語 |
? | 任意の1文字 | "A?C" → ABCやADCなど |
・例3:「@」を含むメール判定
"=IF(ISNUMBER(SEARCH("@",A2)),"メールあり","なし")"
A列 | 結果 |
---|---|
test@example.com | メールあり |
sampletext | なし |
SEARCH関数は「含まれているかどうか」を判定する用途に最適です。
参考:【Excel】「セルに特定の文字が入っていたら」複数条件を判定する方法|IF・OR・SEARCH関数
✅ IF関数+ISNUMBERで「文字が含まれるか」を判定する
SEARCH関数をIF関数と組み合わせると、
「特定の文字を含むかどうか」をTRUE/FALSEで分岐できます。
・特定の文字を含むかどうか判定する構文
"=IF(ISNUMBER(SEARCH(検索文字列, 対象セル)), 条件が真のとき, 偽のとき)"
・例1:「東」が含まれていたら「該当」
"=IF(ISNUMBER(SEARCH("東",A2)),"該当","対象外")"
A列 | 結果 |
---|---|
東京都 | 該当 |
北海道 | 対象外 |
・例2:「特定文字が入っていたら別計算」
"=IF(ISNUMBER(SEARCH("A",B2)),C2*1.1,C2)"
→ 「A」が入っているセルだけ10%加算する、など応用可能。
・POINT
- ISNUMBERは「SEARCHの結果が数値=見つかった」と判定
- 組み合わせで条件付き処理が可能
- FIND関数でも同様に使える(ただし大文字区別)
✅ 部分一致で文字を抽出する方法
「含まれているか」ではなく、実際に含まれる文字を抜き出したい場合は、
TEXT関数やMID関数を組み合わせます。
・例1:「@」以降の文字を抽出
"=MID(A2,SEARCH("@",A2)+1,50)"
A列 | 結果 |
---|---|
test@example.com | example.com |
info@sample.jp | sample.jp |
SEARCHで「@」の位置を求め、その次の文字からMIDで抽出しています。
・例2:「特定文字まで」の文字を抽出
"=LEFT(A2,SEARCH("区",A2))"
A列 | 結果 |
---|---|
東京都新宿区 | 東京都新宿区 |
東京都豊島区池袋 | 東京都豊島区 |
「区」が見つかったところまでを抽出します。
・例3:特定文字の前の部分を取り出す
"=LEFT(A2,SEARCH("区",A2)-1)"
→ 「区」の直前までを取り出します。
・POINT
- FIND/SEARCHで位置を取得 → MID/LEFT/RIGHTで抽出
- 組み合わせることで柔軟な文字抽出が可能
- メール・住所・コード処理などで頻出
参考:【Excel】郵便番号から住所を自動入力する方法|関数や外部サービスを活用して効率化
✅ FILTER関数で特定の文字を含む行だけ抽出(Excel 365以降)
大量のデータから「特定の文字を含む行だけを抽出」したい場合、
FILTER関数を使うと一瞬でできます。
・特定の文字を含む行だけを抽出する構文
"=FILTER(抽出範囲, ISNUMBER(SEARCH(検索文字列, 判定範囲)))"
・例:商品名に「りんご」を含む行だけ表示
"=FILTER(A2:C100, ISNUMBER(SEARCH("りんご",B2:B100)))"
商品名 | 価格 | 在庫 |
---|---|---|
青森りんご | 120 | ○ |
りんごジュース | 200 | ○ |
みかん | 90 | × |
→ 「りんご」を含む行だけ抽出されます。
・POINT
- 部分一致検索+行抽出を同時に実現
- 住所・顧客リスト・商品データなどのフィルタに最適
- 古いExcelでは使えない(365/2021以降限定)
✅ 実務で使える応用テクニック
・複数キーワードで検索
"=IF(OR(ISNUMBER(SEARCH("東京",A2)),ISNUMBER(SEARCH("大阪",A2))),"該当","対象外")"
→ 「東京」または「大阪」が含まれていれば「該当」。
・複数条件を組み合わせて抽出(FILTER関数応用)
"=FILTER(A2:D100,(ISNUMBER(SEARCH("青森",B2:B100)))+(ISNUMBER(SEARCH("秋田",B2:B100))))"
→ 「青森」または「秋田」を含む行をまとめて抽出。
・関数だけでメールドメインを分離
"=RIGHT(A2,LEN(A2)-SEARCH("@",A2))"
→ メールアドレスの@以降を抜き出し可能。
・部分一致でエラーを回避したい場合
"=IFERROR(SEARCH("東京",A2),"")"
→ 見つからない場合は空欄を返す。
✅ 検索系関数の違いまとめ
関数名 | 主な用途 | ワイルドカード | 大文字区別 | 見つからない場合 |
---|---|---|---|---|
FIND | 正確な位置検索 | × | ○ | #VALUE! |
SEARCH | 部分一致・柔軟検索 | ○ | × | #VALUE! |
IF+ISNUMBER | 含有判定 | SEARCH依存 | 区別しない | 条件分岐可能 |
MID/LEFT/RIGHT | 抽出 | × | × | エラーになることも |
FILTER | 行抽出 | ○ | × | 空白になる |
目的に応じてこれらを組み合わせると、
セル内の文字検索が驚くほど効率化します。
✅ 文字検索のコツと注意点
- FINDとSEARCHは見つからない場合に**#VALUE!エラー**になる
→ 「IFERROR」で回避可能 - 全角・半角やスペース違いで検索結果が異なる場合あり
→ 「TRIM」「CLEAN」などで整形してから検索 - 大文字小文字を区別したい場合はFIND、小文字無視ならSEARCH
- 検索文字を動的に変えたいときは別セル参照で
(例:"=SEARCH(B1,A2)" のようにB1の内容を検索)
✅ RPAやPower Automateと連携した検索自動化のヒント
Excelの文字検索は、Power AutomateやUiPathと連携することで、
自動化にも応用できます。
・RPAを使用する例
- Power Automateで毎日Excelを開き、特定文字を含む行だけメール通知
- UiPathで検索結果を抽出して自動仕分け
- Excel関数で事前に検索列を作成し、RPAで条件抽出
手動検索を関数化することで、
RPAツールの処理速度や精度を大幅に向上させることができます。
✅ まとめ:Excel関数でセル内の文字を自在に検索しよう
- FIND関数は「位置を数値で返す」
- SEARCH関数は「大文字小文字を無視・ワイルドカード対応」
- IF+ISNUMBERで「文字が含まれるか」を判定
- MID/LEFT/RIGHTで「文字を抽出」
- FILTERで「行全体を部分一致抽出」
- エラー回避はIFERRORで対策
Excelの文字検索関数は、
「探す・見つける・取り出す・仕分ける」という一連の処理を自動化できます。
日常業務の中で、キーワード検索やデータ抽出の効率を上げたい方は、
今回紹介した関数を組み合わせて、自動検索の仕組みを構築してみてください。