複数列にわたるINDEXとMATCH
複数列にわたって値を照合して検索するには、MMULT、TRANSPOSE, およびCOLUMNを組み合わせた配列数式を使用した INDEXおよびMATCH関数が役立ちます。
複数列にわたって値を照合して検索するにはどうすればよいですか?
上記の表に示されているように、各生徒に対応するクラスを入力する場合、情報が複数列にわたってリストされている場合、まずMMULT、TRANSPOSE、COLUMN関数のトリックを使用して行列配列を生成できます。その後、MATCH関数は検索値の位置を提供し、INDEXに渡されて配列内の目的の値を取得します。
汎用構文
=INDEX(返却範囲,(MATCH(1,MMULT(--(検索範囲=検索値),TRANSPOSE(COLUMN(検索範囲)^0)),0)))
√ 注: これは配列数式であり、Ctrl + Shift + Enterで入力する必要があります。
- 返却範囲: 数式がクラス情報を返す範囲。ここではクラス範囲を指します。
- 検索値: 数式が対応するクラス情報を検索するために使用する値。ここでは指定された名前を指します。
- 検索範囲: 検索値 がリストされているセルの範囲; 検索値 と比較される値を持つ範囲。ここでは名前の範囲を指します。
- 一致タイプ 0: MATCH関数に、検索値と完全に等しい最初の値を見つけるように強制します。
ジミーのクラスを見つけるには、次の数式をセル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(TRANSPOSE(COLUMN($C$5:$E$7)^0)^0) = TRANSPOSE(TRANSPOSE({3,4,5}^0)^0): 0乗すると、配列{3,4,5}のすべての数字が1に変換されます:{1,1,1}。TRANSPOSE関数は、列配列を次のように行配列に変換します:{1;1;1}。
- MMULT(MMULT(--($C$5:$E$7=G5),,TRANSPOSE(COLUMN($C$5:$E$7)^0))) = MMULT(MMULT({1,0,0;0,0,0;0,0,0},,{1;1;1})): MMULT関数は、2つの配列の行列積を次のように返します:{1;0;0}。
- MATCH(1,MATCH(1,MMULT(--($C$5:$E$7=G5),TRANSPOSE(COLUMN($C$5:$E$7)^0)),0),0) = MATCH(1,MATCH(1,{1;0;0},0),0): 一致タイプ 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$7,1): INDEX関数は、クラス範囲$B$5:$B$7の最初の値を返します。それはAです。
複数列にわたって値を簡単に検索するには、当社の専門的なExcelアドインであるKutools For Excelも使用できます。 ここで指示をご覧ください。
関連する関数
Excel INDEX関数は、範囲または配列から指定された位置に基づいて表示される値を返します。
Excel MATCH関数は、特定の値をセル範囲で検索し、その値の相対位置を返します。
Excel MMULT関数は、2つの配列の行列積を返します。配列の結果は、array1と同じ行数を持ち、array2と同じ列数を持ちます。
Excel TRANSPOSE関数は、範囲または配列の方向を回転させます。例えば、水平に配置されたテーブルを垂直に、またはその逆に回転させることができます。
COLUMN関数は、数式が現れる列番号、または指定された参照の列番号を返します。例えば、数式=COLUMN(BD)は56を返します。
関連する数式
複数の列と行キャプションを持つ大きなデータベースを扱う場合、複数の基準を満たすものを見つけるのは常に難しいものです。このような場合、INDEXとMATCH関数を使用した配列数式を使用できます。
Excelで行と列の両方を横断して何かを検索したり、特定の行と列の交点にある値を検索したりするには、INDEXとMATCH関数の助けを借りることができます。
いくつかのケースでは、複数の基準に基づいて最も近いまたは概算の一致値を検索する必要があるかもしれません。INDEX、MATCH、IF関数を組み合わせることで、Excelで迅速にこれを実行できます。
最高のオフィス生産性ツール
Kutools for Excel - あなたを群衆から際立たせるツール
🤖 | Kutools AI Aide: 次の要素に基づいてデータ分析を革新:インテリジェント実行|コード生成 |カスタム数式の作成|データの分析とチャートの生成 |Kutools機能の呼び出し… |
人気の機能:重複を見つける、ハイライトする、または特定する | 空白行を削除 | データを失うことなく列やセルを結合 | 数式を使わずに丸める... | |
スーパー VLookup:複数条件 | 複数値 | 複数シート間 | ファジーマッチ... | |
高度なドロップダウンリスト:簡単なドロップダウンリスト | 従属ドロップダウンリスト | 複数選択可能なドロップダウンリスト... | |
列マネージャー:指定した数の列を追加 | 列を移動 | 非表示の列の可視化ステータスを切り替え | 列を比較して同じ&異なるセルを選択... | |
特徴的な機能:グリッドフォーカス | デザインビュー | 強化された数式バー | ワークブックとシートマネージャー | リソースライブラリ(オートテキスト) | 日付ピッカー | ワークシートの統合 | セルの暗号化/復号化 | リストによるメール送信 | スーパーフィルター | 特殊フィルタ(太字/斜体/取り消し線のフィルタリング...)... | |
上位 15 のツールセット: 12 個のテキストツール (テキストの追加, 特定の文字を削除...) | 50以上 のチャート タイプ (ガントチャート...) | 40以上の実用的な 数式 (誕生日に基づいて年齢を計算...) | 19 個の挿入ツール (QRコードの挿入, パスからの画像挿入...) | 12 個の変換ツール (単語に変換, 通貨変換...) | 7 個のマージ&分割ツール (高度な行のマージ, Excelセルの分割...) | ... さらに多くのツール |
Kutools for Excel は300以上の機能を誇り、必要なものがワンクリックで手に入ります...
Office Tab - Microsoft Office(Excel含む)でタブ形式の閲覧と編集を有効にする
- 数十の開いている文書を1秒で切り替える!
- 毎日数百回のマウスクリックを減らし、マウス手から解放されます。
- 複数の文書を閲覧・編集する際、生産性が50%向上します。
- Chrome、Edge、Firefoxのように、タブ機能をOffice(Excel含む)にもたらします。