Excelで作業をしていると、膨大なデータの中から特定の文字列を見つけ出したい場面に頻繁に遭遇します。
顧客名を検索して該当する行を確認したい、特定の商品コードがどこにあるか調べたい、エラーが発生しているセルを特定したい、文字列の中で特定の文字が何文字目にあるか知りたいなど、文字検索を効率的に行えれば、データ確認や分析作業がスムーズになり、目的の情報に素早くたどり着けます。
手作業で一つずつ目視確認していては時間がかかりすぎますし、見落としのリスクも高まります。
文字検索には複数の方法が存在します。
Ctrl+Fで起動する検索機能による視覚的な検索、FIND関数を使った位置情報の取得、SEARCH関数によるワイルドカード対応の検索、さらにはMATCH関数やXLOOKUP関数を組み合わせた高度な検索まで、目的に応じて最適な手法が異なります。
本記事では、文字検索の様々な方法を詳しく解説し、それぞれの特徴や使い分けのポイントを紹介します。
データ検索の効率化と正確性を高めたい方は、ぜひ最後までお読みください。
ポイントは
・Ctrl+Fの検索機能で素早く該当セルを発見できる
・FIND関数は文字列内の位置を数値で返す
・SEARCH関数はワイルドカードと大文字小文字を区別しない検索が可能
です。
それでは詳しく見ていきましょう。
Ctrl+F検索機能で素早く文字を見つける
それではまず、最も基本的で手軽に使えるCtrl+F検索機能の使い方を確認していきます。
検索ダイアログの基本的な使い方
Ctrl+F検索機能は、シート内の特定の文字列を素早く見つけ出して該当セルに移動できるExcelの標準機能です。
「Ctrl+F」キーを押すと「検索と置換」ダイアログボックスが開き、「検索する文字列」に探したい文字を入力して「次を検索」をクリックするだけで使えます。
基本的な操作手順として、まず「Ctrl+F」キーを押して検索ダイアログを起動します。
「検索する文字列」の入力欄に探したい文字列を入力します。
「次を検索」ボタンをクリックすると、最初に見つかった該当セルが選択され、画面がそのセルまでスクロールします。
さらに「次を検索」をクリックすると、次の該当箇所に移動します。
検索機能の基本操作
Ctrl + F
で検索
ダイアログ起動
検索する
文字列を
入力
「次を検索」で
該当セルへ
移動
「すべて検索」ボタンをクリックすると、該当するすべてのセルがリスト形式で表示されます。
リストには、ブック名、シート名、セル番号、値、数式が表示され、任意の項目をクリックすると該当セルに直接ジャンプできます。
大量のデータから複数の該当箇所を一覧で確認したい場合に便利です。
検索結果の表示方法
次を検索
該当箇所を
一つずつ確認
すべて検索
該当箇所を
リスト表示
| ボタン | 動作 | 用途 |
|---|---|---|
| 次を検索 | 次の該当箇所へ移動 | 一つずつ確認したい場合 |
| すべて検索 | 該当箇所をリスト表示 | 全体を把握したい場合 |
| 閉じる | ダイアログを閉じる | 検索を終了する場合 |
オプション設定で検索精度を高める
検索ダイアログの「オプション」ボタンをクリックすると、より詳細な検索条件を指定できる設定項目が表示されます。
これらのオプションを活用することで、より精密な検索が可能になります。
「検索場所」ドロップダウンでは「シート」または「ブック」を選択でき、ブックを選択すると開いているすべてのシート内で検索されます。
「検索対象」では「数式」「値」「コメント」から選択でき、デフォルトは「数式」です。
「数式」を選択すると、セルに表示されている値だけでなく、数式内の文字列も検索対象になります。
主要な検索オプション
大文字小文字区別
「ABC」と「abc」を
別として扱う
完全一致
セル内容全体が
一致する場合のみ
半角全角区別
「ア」と「ア」を
別として扱う
「大文字と小文字を区別する」にチェックを入れると、英字の大文字小文字を区別して検索します。
「セル内容が完全に同一であるものを検索する」にチェックを入れると、セル全体が検索文字列と完全に一致する場合のみヒットします。
例えば「東京」を検索する場合、通常は「東京都」や「東京支店」もヒットしますが、このオプションを有効にすると「東京」だけのセルのみが対象になります。
ワイルドカードを使った柔軟な検索
検索機能では、ワイルドカード文字を使ってパターンマッチングができます。
主なワイルドカードとして、「*」(アスタリスク)は任意の文字列(0文字以上)を表し、「?」(クエスチョンマーク)は任意の1文字を表します。
例えば、「*商事」と検索すると、「ABC商事」「XYZ商事」など、末尾が「商事」で終わるすべての文字列が検索されます。
「2024/??/01」と検索すると、「2024/01/01」「2024/11/01」など、2024年の各月の1日がすべてヒットします。
ワイルドカード記号そのものを検索したい場合は、「~*」のようにチルダ(~)を前に付けます。
| ワイルドカード | 意味 | 検索例 | マッチする例 |
|---|---|---|---|
| * | 任意の文字列 | 東京* | 東京都、東京支店、東京タワー |
| ? | 任意の1文字 | 商品?? | 商品AB、商品01、商品XY |
| ~* | *記号そのもの | 価格~* | 価格* |
Ctrl+F検索機能を使う際の注意点として、検索は現在アクティブなセルから開始されます。
シートの途中から検索を開始すると、それより前の部分は最初には検索されません。
シート全体を検索したい場合は、先頭セル(A1)を選択してから検索を開始するか、検索が最後まで到達したときに表示される「先頭から検索しますか?」のメッセージで「はい」を選択します。
また、非表示になっている行や列も検索対象に含まれるため、見つかったセルが画面に表示されないことがあります。
この場合は、該当する行や列の再表示を行うと確認できます。
さらに、保護されたシートでも検索は実行できますが、検索結果のセルを編集することはできません。
FIND関数で文字列の位置を取得する
続いては関数を使って、文字列内の特定文字の位置を数値で取得する方法を確認していきます。
FIND関数の基本構文と動作原理
FIND関数は、指定した文字列が何文字目にあるかを数値で返す関数です。
構文は「=FIND(検索文字列, 対象文字列, [開始位置])」で、第3引数は省略可能です。
第1引数に探したい文字列、第2引数に検索対象となる文字列またはセル参照を指定します。
例えば、A1セルに「東京都新宿区」という文字列が入っている場合、「=FIND(“新宿”, A1)」と入力すると4が返されます。
「新宿」という文字列が4文字目から始まっていることを示しています。
この位置情報は、LEFT・MID・RIGHT関数と組み合わせて文字列を抽出する際に非常に役立ちます。
FIND関数の動作イメージ
文字列 (A1)
位置: 123456…
=FIND(“新宿”,A1)
4文字目から開始
FIND関数は、検索文字列が見つからない場合、エラー値「#VALUE!」を返します。
このため、IFERROR関数やIFERROR関数と組み合わせて、エラー処理を行うことが一般的です。
例えば「=IFERROR(FIND(“新宿”, A1), “該当なし”)」とすれば、見つからない場合に「該当なし」と表示されます。
| 対象文字列 | 数式 | 結果 |
|---|---|---|
| 東京都新宿区 | =FIND(“新宿”,A1) | 4 |
| user@example.com | =FIND(“@”,A1) | 5 |
| 2024-11-17 | =FIND(“-“,A1) | 5 |
開始位置を指定して複数の出現箇所を検索
FIND関数の第3引数を使うと、検索を開始する位置を指定できるため、2番目以降の出現箇所も検索できます。
例えば、「東京都東京」という文字列で2番目の「東京」の位置を検索したい場合、まず1番目の位置を取得し、その次の位置から再度検索します。
具体的には、「=FIND(“東京”, A1, FIND(“東京”, A1)+1)」という数式を使います。
内側のFIND関数で1番目の「東京」の位置を取得し、その位置に1を加えた位置から再度検索することで、2番目の「東京」の位置が取得できます。
この手法は、カンマ区切りデータで2番目のカンマの位置を特定する場合などに活用できます。
複数の出現箇所を検索する方法
| 文字列 | 検索対象 | 数式 | 結果 |
|---|---|---|---|
| A,B,C,D | 1番目のカンマ | =FIND(“,”,A1) | 2 |
| A,B,C,D | 2番目のカンマ | =FIND(“,”,A1,FIND(“,”,A1)+1) | 4 |
LEFT・MID・RIGHT関数と組み合わせた文字列抽出
FIND関数の最も実用的な活用方法は、LEFT・MID・RIGHT関数と組み合わせて動的に文字列を抽出することです。
例えば、メールアドレスから「@」の前(ユーザー名)と後(ドメイン)を分割する場合に使えます。
ユーザー名を抽出するには「=LEFT(A1, FIND(“@”, A1)-1)」という数式を使います。
FIND関数で「@」の位置を検索し、その位置から1を引いた文字数だけLEFT関数で左側から取得します。
ドメインを抽出するには「=RIGHT(A1, LEN(A1)-FIND(“@”, A1))」を使い、全体の長さから「@」の位置を引いた文字数だけ右側から取得します。
メールアドレスの分割例
| 元データ | ユーザー名 | ドメイン |
|---|---|---|
| user@example.com | user | example.com |
| =LEFT(A1,FIND(“@”,A1)-1) | =RIGHT(A1,LEN(A1)-FIND(“@”,A1)) |
FIND関数を使う際の重要な注意点として、この関数は大文字と小文字を区別します。
「ABC」と「abc」は別の文字列として扱われるため、大文字小文字を区別せずに検索したい場合は、後述するSEARCH関数を使用するか、UPPER関数やLOWER関数で文字列を統一してから検索する必要があります。
また、FIND関数は全角文字も半角文字も1文字としてカウントします。
検索文字列が見つからない場合は必ずエラーが返されるため、IFERROR関数やIFNA関数でエラー処理を行うことが推奨されます。
特に、ユーザー入力データや外部システムからのインポートデータなど、データ形式が統一されていない可能性がある場合は、エラー処理が必須です。
SEARCH関数でワイルドカード対応の検索
続いてはFIND関数より柔軟な検索ができるSEARCH関数の使い方を確認していきます。
SEARCH関数の基本構文とFIND関数との違い
SEARCH関数は、FIND関数と同様に文字列の位置を返すが、大文字小文字を区別せず、ワイルドカードも使える関数です。
構文は「=SEARCH(検索文字列, 対象文字列, [開始位置])」で、FIND関数と全く同じ形式です。
使い方もFIND関数とほぼ同じですが、検索の柔軟性が大きく異なります。
例えば、A1セルに「Excel Tutorial」という文字列が入っている場合、「=SEARCH(“excel”, A1)」と入力すると1が返されます。
検索文字列が小文字の「excel」でも、対象文字列の大文字「Excel」にマッチします。
FIND関数の場合は、大文字小文字が異なるとエラーになりますが、SEARCH関数は区別しないため、より柔軟な検索が可能です。
FIND関数とSEARCH関数の比較
| 項目 | FIND関数 | SEARCH関数 |
|---|---|---|
| 大文字小文字 | 区別する | 区別しない |
| ワイルドカード | 使えない | 使える(*、?) |
| 返り値 | 位置(数値) | 位置(数値) |
| 対象文字列 | FIND(“excel”,A1) | SEARCH(“excel”,A1) |
|---|---|---|
| Excel Tutorial | #VALUE!(エラー) | 1(マッチ) |
| excel tutorial | 1(マッチ) | 1(マッチ) |
| EXCEL TUTORIAL | #VALUE!(エラー) | 1(マッチ) |
ワイルドカードを使った柔軟な検索
SEARCH関数では、ワイルドカード文字(*と?)を使ってパターンマッチングができます。
「*」は任意の文字列(0文字以上)を表し、「?」は任意の1文字を表します。
これにより、部分一致や特定パターンの検索が可能になります。
例えば、「=SEARCH(“商事”, A1)」は「商事」という文字列を含むかどうかを検索しますが、「=SEARCH(“*商事”, A1)」とすれば末尾が「商事」で終わる文字列を検索できます。
「=SEARCH(“2024/??/01”, A1)」とすれば、「2024/01/01」「2024/11/01」など、2024年の各月1日にマッチします。
SEARCH関数でのワイルドカード使用例
| 対象文字列 | 数式 | 結果 |
|---|---|---|
| ABC商事株式会社 | =SEARCH(“*商事*”,A1) | 4 |
| 商品A001 | =SEARCH(“商品????”,A1) | 1 |
IF関数と組み合わせた条件分岐
SEARCH関数はIF関数やIFERROR関数と組み合わせることで、特定の文字列が含まれているかどうかで条件分岐できます。
SEARCH関数が数値を返せば文字列が存在し、エラーを返せば存在しないという性質を利用します。
例えば、「=IF(ISNUMBER(SEARCH(“東京”, A1)), “対象”, “対象外”)」という数式を使えば、A1セルに「東京」という文字列が含まれていれば「対象」、含まれていなければ「対象外」と表示されます。
SEARCH関数が数値を返すかどうかをISNUMBER関数で判定し、IF関数で分岐させています。
| 対象文字列 | 数式 | 結果 |
|---|---|---|
| 東京都新宿区 | =IF(ISNUMBER(SEARCH(“東京”,A1)),”対象”,”対象外”) | 対象 |
| 大阪府大阪市 | =IF(ISNUMBER(SEARCH(“東京”,A1)),”対象”,”対象外”) | 対象外 |
より簡潔に書くには、「=IFERROR(SEARCH(“東京”, A1), “該当なし”)」のようにIFERROR関数だけを使う方法もあります。
文字列が見つかれば位置が返され、見つからなければ「該当なし」と表示されます。
この方法は、検索結果の有無だけを確認したい場合に便利です。
SEARCH関数を使う際の注意点として、ワイルドカード文字そのものを検索したい場合は、チルダ(~)を前に付ける必要があります。
例えば、「*」という記号を検索したい場合は「=SEARCH(“~*”, A1)」とします。
また、SEARCH関数も全角文字と半角文字を1文字としてカウントするため、バイト数ではなく文字数で位置を返します。
大文字小文字を区別しないという特性は便利ですが、厳密に区別したい場合はFIND関数を使う必要があります。
用途に応じて、FIND関数とSEARCH関数を使い分けることが重要です。
一般的に、ユーザー入力データや自由形式のテキストを検索する場合はSEARCH関数が適しており、厳密な形式が決まっているデータを検索する場合はFIND関数が適しています。
まとめ 文字検索の基本から応用まで|Ctrl+F・FIND関数・SEARCH関数を使いこなす
エクセルの文字検索方法をまとめると
・Ctrl+F検索機能:素早く該当セルを発見、すべて検索でリスト表示、ワイルドカードやオプション設定で精密検索
・FIND関数:文字列内の位置を数値で返す、大文字小文字を区別、LEFT・MID・RIGHT関数と組み合わせて文字列抽出
・SEARCH関数:大文字小文字を区別しない、ワイルドカード対応、IF関数と組み合わせて条件分岐
これらの方法にはそれぞれメリットがあり、目的に応じて使い分けることが重要です。
単純にセルを見つけたい場合はCtrl+F検索機能、文字列の位置情報を使って加工したい場合は関数、柔軟な検索が必要な場合はSEARCH関数が適しているでしょう。
ただし、検索対象のデータ形式が統一されていない場合は注意が必要です。
エラー処理を適切に行い、想定外のデータに対しても安全に動作するよう配慮することが重要です。
Excelの文字検索テクニックを適切に活用して、データ確認と分析の効率化を実現していきましょう!