複数列にわたる INDEX および MATCH の使用
複数列にわたって値の一致を検索するには、INDEX 関数とMATCH 関数をベースにした配列数式に、さらにMMULT 関数、TRANSPOSE 関数、およびCOLUMN 関数を組み合わせるのが効果的です。

複数列にわたって値を検索する方法は?
上記の表に示されているように、各学生に対応するクラスを入力する必要があり、かつ情報が複数列にわたって配置されている場合は、まず MMULT 関数、TRANSPOSE 関数、および COLUMN 関数を組み合わせて行列配列を作成します。その後、MATCH 関数で検索値の位置を特定し、その位置を INDEX 関数に渡して目的の値を取得します。
一般的な構文
=INDEX()return_range,(MATCH(1,MMULT(--())))lookup_array=lookup_value),TRANSPOSE(COLUMN()lookup_array)^0)),0)))
√ 注意:これは配列数式であり、Ctrl+Shift+Enterキーを押して入力してください。
- return_range:数式がクラス情報を返すもととなる範囲です。ここでは、クラスの範囲を指します。
- lookup_value:数式が該当するクラス情報を検索する際に使用する値です。ここでは、指定された名前を指します。
- lookup_array:lookup_valueがリストされているセル範囲です。また、lookup_valueと比較する値を含む範囲でもあり、ここでは名前の範囲を指します。
- match_type 0:MATCH 関数に、lookup_valueと完全に一致する最初の値を検索させます。
ジミーのクラスを検索するには、セル H5 に以下の数式をコピーまたは入力し、Ctrl+Shift+Enterキーを押して、結果を取得してください。
=INDEX()$B$5:$B$7,(MATCH(1,MMULT(--())))$C$5:$E$7=G5),TRANSPOSE(COLUMN()$C$5:$E$7)^0)),0)))
√ 注意:上記のドル記号($)は絶対参照を示しており、数式を他のセルに移動またはコピーしても、数式内の名前およびクラスの範囲が変更されないことを意味します。ただし、検索値を表すセル参照にはドル記号を追加しないでください。他のセルにコピーした際に相対参照として動作させる必要があるためです。数式を入力したら、フィルハンドルを下方向にドラッグして、下のセルにもその数式を適用してください。

数式の説明
=INDEX()$B$5:$B$7,(MATCH(1,))MMULT()--($C$5:$E$7=G5),TRANSPOSE()COLUMN($C$5:$E$7)^0)),0)))
- --($C$5:$E$7=G5):このセグメントは、範囲 $C$5:$E$7 内の各値がセル G5 の値と一致するかどうかをチェックし、次のような TRUE/FALSE の配列を生成します:
{TRUE,FALSE,FALSE;FALSE,FALSE,FALSE;FALSE,FALSE,FALSE}。
先頭の二重マイナス(--)により、TRUE と FALSE はそれぞれ1 と0 に変換され、次のような数値配列になります:
{1,0,0;0,0,0;0,0,0}。 - COLUMN($C$5:$E$7):COLUMN 関数は、範囲 $C$5:$E$7の列番号を次のような配列で返します:{3,4,5}。
- TRANSPOSE()COLUMN($C$5:$E$7)^0)=TRANSPOSE(){3,4,5}^0):0 乗した後、配列{3,4,5}内のすべての数値は1 に変換され、{1,1,1}となります。その後、TRANSPOSE 関数により列配列が次のような行配列に変換されます:{1;1;1}。
- MMULT()--($C$5:$E$7=G5),TRANSPOSE()COLUMN($C$5:$E$7)^0))=MMULT(){1,0,0;0,0,0;0,0,0},{1;1;1}):MMULT 関数は、次のように2 つの配列の行列積を返します:{1;0;0}。
- MATCH(1,)MMULT()--($C$5:$E$7=G5),TRANSPOSE()COLUMN($C$5:$E$7)^0)),0)=MATCH(1,){1;0;0},0):match_type 0により、MATCH 関数は配列 {1;0;0} 内で1が最初に一致する位置を返します。その位置は1です。
- INDEX()$B$5:$B$7,(MATCH(1,))MMULT()--($C$5:$E$7=G5),TRANSPOSE()COLUMN($C$5:$E$7)^0)),0))) = INDEX($B$5:$B$7INDEX 関数は、クラス範囲 1の$B$5:$B$7からA 番目の値を返します。
複数の列にまたがって値を簡単に検索したい場合は、当社のプロフェッショナルなExcel アドインKutools For Excelもぜひご活用ください。このタスクの実行手順については、こちらをご確認ください。。
関連する関数
Excel の INDEX 関数は、指定された範囲または配列から、指定された位置に基づいて値を返します。
Excel の MATCH 関数は、指定したセル範囲内で特定の値を検索し、その相対位置を返します。
Excel の MMULT 関数は、2 つの配列の行列積を計算し、その結果として array1 と同じ行数と array2 と同じ列数を持つ配列を返します。
Excel の TRANSPOSE 関数を使えば、範囲や配列の向きを簡単に回転できます。たとえば、行に水平に並べられた表を列に垂直に配置し直したり、その逆も自在です。
COLUMN 関数は、数式が入力されている列の番号、または指定された参照の列番号を返します。たとえば、数式「=COLUMN(BD)」は56 を返します。
関連する数式
Excel スプレッドシートで多数の列と行見出しを含む大規模なデータベースを扱う際、複数の条件に一致するデータを検索するのは常に難しいものです。そんなときは、INDEX 関数と MATCH 関数を組み合わせた配列数式が活用できます。
Excel で行と列を横断的に検索し、特定の行と列の交点にある値を取得するには、INDEX 関数と MATCH 関数を組み合わせて使うのが効果的です。
場合によっては、複数の条件に基づいて最も近い値や近似値を検索する必要があります。そんなときは、INDEX 関数、MATCH 関数、そして IF 関数を組み合わせることで、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 のような効率的なタブ機能をもたらします。