Excelで大量のデータを扱っていると、特定の文字列を含むセルを見つけたり、文字列の位置を特定したりする必要が頻繁に発生します。
顧客リストから特定の地域の顧客を抽出したい、商品名に特定のキーワードが含まれているか確認したい、メールアドレスの@マークの位置を特定したいなど、手作業で一つずつ確認していては膨大な時間がかかり、見落としのリスクも高まります。
特に数千行のデータから特定の条件に合致するものを探す場合、効率的な検索方法を知らないと作業が進みません。
Excelには文字を検索する方法が複数用意されています。
Ctrl+Fによる基本検索、FIND関数やSEARCH関数による位置検索、VLOOKUP関数やFILTER関数によるデータ抽出など、目的に応じて最適な方法が異なります。
本記事では、文字列を検索する様々な方法を詳しく解説し、部分一致検索、後ろから検索、あいまい検索など、実践的なテクニックを紹介します。
データ検索を効率化したい方は、ぜひ最後までお読みください。
ポイントは
・Ctrl+Fで基本的な検索とワイルドカード検索が可能
・FIND/SEARCH関数で文字位置を特定して数式で活用できる
・VLOOKUP/FILTER関数で条件に合致するデータを抽出できる
です。
それでは詳しく見ていきましょう。
基本的な文字検索とワイルドカード活用
それではまず、Excelの標準検索機能を使った基本的な文字検索方法を確認していきます。
Ctrl+Fによる基本検索の使い方
最も基本的な検索方法は、Ctrl+Fキーで開く「検索と置換」ダイアログを使用することです。
「ホーム」タブの「検索と選択」→「検索」からも同じダイアログを開けます。
検索ボックスに探したい文字列を入力して「次を検索」をクリックすると、該当するセルが順番に選択されます。
「すべて検索」をクリックすると、該当するセルがすべてリスト表示され、一覧から確認できます。
リストに表示された項目をクリックすると、そのセルに直接ジャンプできるため、複数の該当箇所を効率的に確認できます。
検索機能の基本操作
Ctrl+Fキーを押す
検索ボックスに
文字列を入力
「次を検索」または
「すべて検索」
検索オプションを展開すると、より詳細な設定が可能になります。
「オプション」ボタンをクリックすると、検索範囲をシート全体にするかブック全体にするか、大文字と小文字を区別するか、セル内容全体と一致するセルのみを検索するかなど、細かく設定できます。
| 検索オプション | 説明 |
|---|---|
| 検索場所 | シート/ブック全体を選択 |
| 検索方向 | 行方向/列方向を指定 |
| 大文字と小文字を区別 | ONで厳密に一致するもののみ検索 |
| セル内容が完全に一致 | ONで部分一致を除外 |
ワイルドカードを使ったあいまい検索
正確な文字列が分からない場合や、パターンマッチングをしたい場合は、ワイルドカードを使ったあいまい検索が便利です。
アスタリスク「*」は任意の文字列を表し、クエスチョンマーク「?」は任意の1文字を表します。
例えば、「東京*」と検索すると、「東京都」「東京タワー」「東京スカイツリー」など、東京で始まるすべての文字列が検索されます。
「?田」と検索すると、「山田」「佐田」「飯田」など、2文字目が田である文字列が検索されます。
「20??年」と検索すれば、「2020年」「2021年」「2024年」など、4桁の年号を含む文字列を検索できます。
ワイルドカードの使用例
*(アスタリスク)
任意の文字列
例: 東京*
→ 東京都、東京タワー
?(クエスチョン)
任意の1文字
例: ?田
→ 山田、佐田、飯田
ワイルドカード文字そのものを検索したい場合は、チルダ「~」を前に付けます。
例えば、「~*」と入力すると、アスタリスクそのものを検索できます。
「~?」でクエスチョンマークを検索できます。
検索結果をハイライト表示する方法
検索で見つかったセルを視覚的に分かりやすくしたい場合は、条件付き書式と組み合わせてハイライト表示できます。
検索機能で該当セルを見つけた後、そのセルに色を付けたり、フォントを変更したりすることで、後から確認しやすくなります。
また、「すべて検索」の結果リストからセルを選択すると、該当するセルがすべて選択状態になるため、その状態で書式設定を一括適用できます。
これにより、検索結果を視覚的に強調表示できます。
基本検索機能は非常に便利ですが、あくまで手動での検索になるため、大量のデータから条件に合致するものを自動的に抽出したい場合には向いていません。
そのような場合は、後述するFIND関数やFILTER関数などを使った自動化された検索方法を検討しましょう。
また、検索は現在のシートまたはブック内のみが対象で、閉じているブックや外部データは検索できません。
複数のファイルにまたがって検索したい場合は、Windowsのエクスプローラーの検索機能などを併用する必要があります。
FIND関数とSEARCH関数で文字位置を特定
続いては関数を使って、文字列の位置を数値で取得する方法を確認していきます。
FIND関数の基本構文と使い方
FIND関数は、指定した文字列が何文字目にあるかを数値で返す関数です。
構文は「=FIND(検索文字列,対象文字列,[開始位置])」という形式で、検索文字列が見つかった位置を左から数えた文字数で返します。
例えば、A1セルに「山田太郎」という文字列が入っていて、「太」という文字が何文字目にあるかを調べる場合、「=FIND(“太”,A1)」と入力すると「3」が返されます。
これは「太」が左から3文字目にあることを示しています。
FIND関数の動作イメージ
対象文字列
A1セル
=FIND(“太”,A1)
3文字目にある
FIND関数は大文字と小文字を区別します。
「ABC」と「abc」は別の文字列として扱われるため、厳密な検索が必要な場合に適しています。
検索文字列が見つからない場合は、エラー値「#VALUE!」が返されます。
| 対象文字列 | 数式 | 結果 |
|---|---|---|
| 山田太郎 | =FIND(“太”,A1) | 3 |
| tokyo@example.com | =FIND(“@”,A1) | 6 |
| 商品A-001 | =FIND(“-“,A1) | 4 |
SEARCH関数との違いと使い分け
SEARCH関数はFIND関数とほぼ同じ機能を持ちますが、大文字と小文字を区別せず、ワイルドカードも使える点が異なります。
構文は「=SEARCH(検索文字列,対象文字列,[開始位置])」で、FIND関数と同じです。
例えば、「ABC」を検索する場合、FIND関数では「ABC」と完全一致するものしか見つかりませんが、SEARCH関数では「abc」や「Abc」も見つかります。
また、SEARCH関数では「*」や「?」のワイルドカードが使用できるため、あいまい検索にも対応できます。
FIND関数とSEARCH関数の違い
FIND関数
・大文字小文字を区別
・ワイルドカード不可
・厳密な検索向け
SEARCH関数
・大文字小文字を区別しない
・ワイルドカード使用可
・柔軟な検索向け
用途に応じて使い分けることが重要です。
商品コードやIDなど厳密に一致するものを検索する場合はFIND関数、名前や住所などで大文字小文字を気にせず検索したい場合はSEARCH関数が適しています。
後ろから検索する方法
FIND関数やSEARCH関数は左から検索しますが、右から(後ろから)検索したい場合はやや工夫が必要です。
Excel 2019以降では、TEXTAFTER関数やTEXTBEFORE関数などの新しい関数が追加されていますが、それ以前のバージョンでは、SUBSTITUTE関数と組み合わせた複雑な数式が必要になります。
例えば、ファイルパス「C:\Users\Documents\file.txt」から最後の「\」の位置を見つけたい場合、すべての「\」の個数を数えてから、最後の「\」を特定する必要があります。
具体的には、「\」の出現回数をLEN関数とSUBSTITUTE関数で計算し、その回数目の「\」の位置を特定します。
FIND関数やSEARCH関数で取得した位置情報は、他の関数と組み合わせることで真価を発揮します。
例えば、メールアドレスから「@」の位置を特定して、LEFT関数で@より前の部分(ユーザー名)を取り出したり、MID関数で@より後ろの部分(ドメイン)を取り出したりできます。
また、IFERROR関数と組み合わせることで、検索文字列が見つからない場合のエラー処理も可能です。
「=IFERROR(FIND(“@”,A1),”見つかりません”)」のようにすれば、エラーの代わりにメッセージを表示できます。
VLOOKUP関数とFILTER関数でデータ抽出
続いては検索した結果を元に、データを抽出する方法を確認していきます。
VLOOKUP関数による完全一致検索
VLOOKUP関数は、検索値を元に表から該当するデータを取り出す関数です。
構文は「=VLOOKUP(検索値,範囲,列番号,[検索方法])」で、検索値と完全に一致する行を見つけて、指定した列の値を返します。
例えば、商品コードから商品名を検索する場合、A列に商品コード、B列に商品名が入った表があれば、「=VLOOKUP(“A001”,A:B,2,FALSE)」とすることで、商品コードA001の商品名を取得できます。
第4引数のFALSEは完全一致を意味し、厳密に一致するものだけを検索します。
VLOOKUP関数の使用イメージ
検索元の表
(商品コード・商品名)
VLOOKUP関数で
商品コード検索
該当する
商品名を取得
VLOOKUP関数は完全一致が基本ですが、第4引数をTRUEにすると近似一致検索になります。
ただし、近似一致は検索範囲が昇順に並んでいる必要があるため、使用場面は限定的です。
一般的には完全一致(FALSE)で使用することが多いです。
| 引数 | 説明 | 例 |
|---|---|---|
| 検索値 | 探したい値 | “A001” |
| 範囲 | 検索対象の表全体 | A:B |
| 列番号 | 取得したい列の位置 | 2(2列目) |
| 検索方法 | 完全一致ならFALSE | FALSE |
FILTER関数による部分一致抽出
Excel 365やExcel 2021以降では、FILTER関数を使って条件に合致する行をすべて抽出できます。
構文は「=FILTER(配列,条件,[空の場合])」で、条件に合致する行だけを取り出して表示します。
部分一致で検索したい場合は、FILTER関数とSEARCH関数を組み合わせます。
例えば、A列の商品名に「ノート」という文字を含む行をすべて抽出したい場合、「=FILTER(A:C,ISNUMBER(SEARCH(“ノート”,A:A)),”該当なし”)」という数式を使います。
SEARCH関数で「ノート」が含まれているかを判定し、ISNUMBER関数で数値(位置が見つかった)かどうかを確認します。
FILTER関数による部分一致検索
元データ
(全商品リスト)
FILTER関数で
条件指定
該当行のみ
自動抽出
FILTER関数の利点は、元データが更新されると自動的に結果も更新される点です。
動的な抽出が必要な場合に非常に便利で、手動でフィルターをかけ直す必要がありません。
COUNTIF関数で該当件数をカウント
特定の文字列を含むセルの個数を数えたい場合は、COUNTIF関数を使用します。
構文は「=COUNTIF(範囲,条件)」で、条件に合致するセルの個数を返します。
部分一致で検索する場合は、ワイルドカードを使います。
「=COUNTIF(A:A,”*東京*”)」とすれば、A列で「東京」という文字を含むセルの個数を数えられます。
「*東京」なら東京で終わる、「東京*」なら東京で始まるセルを数えます。
検索関数を使う際の注意点として、検索対象の範囲が大きすぎると計算に時間がかかることがあります。
特にFILTER関数やCOUNTIF関数で列全体を指定すると、数万行のデータがある場合に動作が重くなる可能性があります。
可能であれば、必要な範囲だけを指定することで、パフォーマンスを改善できます。
また、検索文字列に特殊文字(*、?、~など)が含まれている場合は、意図しない結果になることがあるため、注意が必要です。
まとめ エクセルで文字を検索(後ろから:セル内の特定:あいまい検索も)
エクセルで文字を検索する方法をまとめると
・基本検索:Ctrl+Fで検索ダイアログを開き、ワイルドカード(*、?)を使ってあいまい検索も可能
・位置検索:FIND関数で大文字小文字を区別、SEARCH関数で区別せずワイルドカードも使用可能
・データ抽出:VLOOKUP関数で完全一致検索、FILTER関数とSEARCH関数の組み合わせで部分一致抽出
・件数カウント:COUNTIF関数にワイルドカードを使って条件に合致するセルの個数を集計
これらの方法にはそれぞれ用途があり、状況に応じた使い分けが重要です。
手動で確認したい場合は基本検索、数式で自動化したい場合は関数を使った方法が適しています。大量データから条件抽出する場合はFILTER関数が最も効率的でしょう。
ただし、検索条件が複雑な場合は注意が必要です。
複数の条件を組み合わせたい場合は、AND関数やOR関数と組み合わせたり、複数のFILTER関数を入れ子にしたりする必要があります。
Excelの文字検索テクニックを適切に活用して、データ分析作業の効率化を実現していきましょう!