リストに対してセル内の最初に一致する値を取得する
キーワードのリストがある場合、特定のセルに含まれる複数の値の中から最初に出現するキーワードを取得するには、INDEX 関数とMATCH 関数に加え、AGGREGATE 関数およびSEARCH 関数を組み合わせた数式を使用する必要があります。

リスト内でセルの値と最初に一致するものを取得するには?
上記の表のように、キーワードリストに対してセル内で最初に一致したキーワードを取得するには、完全一致ではなく部分一致を行う必要があります。そのためには、SEARCH 関数でセル内に出現する各キーワードの位置を数値として求め、その結果を AGGREGATE 関数に渡します。その後、AGGREGATE 関数のfunction_num を15 に、ref2 引数を1 に設定することで最小値を取得します。次に MATCH 関数を使用して最小値の位置を特定し、その位置番号を INDEX 関数に渡して該当する値を取得します。
一般的な構文
=INDEX()keyword_rng,MATCH(AGGREGATE(15,6,SEARCH()))keyword_rng,lookup_cell),1),SEARCH(keyword_rng,lookup_cell),0))
√ 注:これは配列数式であるため、入力後にCtrl+Shift+Enterを押して確定する必要があります。
- keyword_rng:キーワードを含むセルの範囲。
- lookup_cell:キーワードを含むかどうかを調べるセル。
キーワード列に対してセル B5 に最初に一致したキーワードを取得するには、以下の数式をセル C5 にコピーまたは入力し、Ctrl+Shift+Enter+Enterを押して、結果を取得してください。
=INDEX()$E$5:$E$7,MATCH(AGGREGATE(15,6,SEARCH()))$E$5:$E$7,B5),1),SEARCH($E$5:$E$7,B5),0))
√ 注:上記のドル記号($)は絶対参照を示しており、数式を他のセルに移動またはコピーしてもkeyword_rngが変更されないことを意味します。一方、lookup_cellにはドル記号が付いていないため、この参照は相対的(動的)になります。数式を入力後、フィルハンドルを下にドラッグして下のセルにも数式を適用してください。

数式の説明
=INDEX($E$5:$E$7,)MATCH()AGGREGATE(15,6,)SEARCH($E$5:$E$7,B5),1),SEARCH($E$5:$E$7,B5),0))
- SEARCH($E$5:$E$7,B5):SEARCH 関数は、範囲 $E$5:$E$7 内の各キーワードを検索し、見つかった場合はその位置を数値で返します。見つからない場合は#VALUE!エラーを返します。結果は次のような配列になります:{15;11;#VALUE!}。
- AGGREGATE(15,6,)SEARCH($E$5:$E$7,B5),1)=AGGREGATE(15,6,){15;11;#VALUE!},1): 関数番号が15、オプションが6に設定されたAGGREGATE 関数は、第2 引数(ref2)で指定された配列からエラー値を無視して最小値を返します。そのため、このスニペットは11を返します。
- MATCH()AGGREGATE(15,6,)SEARCH($E$5:$E$7,B5),1),SEARCH($E$5:$E$7,B5)=MATCH()11,{15;11;#VALUE!},0):MATCH 関数のmatch_type 引数が0のため、完全一致が実行され、配列 {15;11;#VALUE!} 内における値 11の位置が返されます。したがって、この関数は2を返します。
- INDEX($E$5:$E$7,)MATCH()AGGREGATE(15,6,)SEARCH($E$5:$E$7,B5),1),SEARCH($E$5:$E$7,B5)) = INDEX($E$5:$E$7,2):その後、INDEX 関数は範囲 $E$5:$E$7の2 番目の値を返します。これはbbbです。
備考
- セル内にキーワードが存在しない場合、#NUM!エラーが表示されます。
- この数式は大文字と小文字を区別しません。大文字と小文字を区別する検索を行うには、SEARCH 関数をFIND 関数に置き換えてください。
関連関数
Excel の INDEX 関数は、指定された範囲または配列から、指定位置に基づいて値を返します。
Excel の MATCH 関数は、指定したセル範囲内で特定の値を検索し、その値が範囲内で何番目に位置しているかを返します。
Excel では、SEARCH 関数を使って、指定されたテキスト文字列内にある特定の文字や部分文字列の位置を簡単に検索できます(下記スクリーンショット参照)。このチュートリアルでは、Excel で SEARCH 関数を効果的に使う方法をご紹介します。
Excel の AGGREGATE 関数を使えば、SUM や COUNT、SMALL などの集計計算を実行しながら、エラーや非表示行を簡単に無視できます。
関連数式
特定のセルに含まれる複数の値のうち、指定範囲にリストされている最初のキーワードを取得するには、INDEX 関数、MATCH 関数、ISNUMBER 関数、および SEARCH 関数を組み合わせたやや複雑な配列数式を使用する必要があります。
Excel で特定の製品、映画、人物などの情報を検索する必要があるときは、INDEX 関数と MATCH 関数を組み合わせるのが効果的です。
このチュートリアルでは、セルが特定のテキストを含むかどうかを判定し、TRUE または FALSE を返す数式をいくつか紹介します。また、各引数と数式の動作についても解説します(下記スクリーンショット参照)。
Excel で列 E に値のリストがあり、列 B のセルがそのすべての値を含んでいるかどうかを確認し、TRUE または FALSE を返したいとします(下記のスクリーンショット参照)。このチュートリアルでは、このタスクを解決するための数式をご紹介します。
このチュートリアルでは、セルがExcel で複数の値のいずれかを含んでいるかどうかを判定する数式を紹介し、その引数と動作を詳しく解説します。
最高の Office 生産性ツール
Kutools for Excel - あなたを群衆の中から際立たせます
| 🤖 | KUTOOLS AI アシスト:次に基づいてデータ分析を革新します:インテリジェント実行 | コード生成| カスタム数式作成 | データ分析とチャート生成| 拡張機能呼び出し… |
| 人気機能:検索・ハイライト・重複をマーキング | 空白行を削除する | データを失うことなく列の結合またはセルを | 数式を使用しない四捨五入... | |
| スーパー VLookup:複数条件 | 複数値 | 複数シート間 | ファジーマッチ... | |
| 高度なドロップダウンリスト:簡単なドロップダウンリスト | 連動型ドロップダウンリスト | 複数選択可能なドロップダウンリスト... | |
| 列マネージャー:指定した数の列を追加 | 列の移動 | 非表示列の表示状態を切り替え |列を比較して同じ/異なるセルを選択... | |
| 注目の機能:グリッドフォーカス | デザインビュー | 強化された数式バー | ワークブックとシートマネージャー|リソースライブラリ(オートテキスト)| 日付ピッカー | ワークシートの統合 | 暗号化/セルの復号化 | リストからメール送信 | スーパーフィルター | 特殊フィルタ(太字のフォントを持つセルをフィルタリング/イタリック/取り消し線。。。) 。。。 | |
| トップ15 ツールセット:12 テキストツール(テキストの追加、特定の文字を削除...)| 50+チャートタイプ(ガントチャート...)| 40+実用的な数式(誕生日に基づいて年齢を計算します...)| 19 挿入ツール(QR コードを挿入、パスから画像を挿入...)| 12 変換ツール(単語に変換する、為替レートの変換...)| 7 結合と分割ツール(高度な行のマージ、Excel セルを分割...)|。。。他にも多数 |
Kutools for Excel は300 以上の機能を備えており、必要な機能が常にワンクリックで利用できます…
Office Tab - Microsoft Office(Excel を含む)でタブを使った閲覧・編集を可能にします
- 数十もの開いているドキュメントを1 秒で切り替えられます!
- 毎日何百回ものマウスクリックを削減して、マウス手の悩みともさよならしましょう。
- 複数のドキュメントを閲覧・編集する際の生産性が50%も向上します。
- Office(Excel を含む)に、Chrome、Edge、Firefox のような効率的なタブ機能をもたらします。