INDEXとMATCHを使用して基本的なルックアップを実現しようとしています。私のレイアウトは次のとおりです。
シート1 NAME |サイト|日付 シート2 NAME |サイト|日付
シート1の「SITE」列に、NAMEとDATEが一致するシート2のSITEを自動的に入力する必要があります。
私が試したもの
=INDEX('Sheet2'!B:B,MATCH(A1,'Sheet2'!A:A,0))
これは正常にNAMEに一致しますが、bothNAMEおよび日付?
この種の問題に対する従来の解決策は、検索語のペア(つまり、ヘルパー列)を連結し、連結されたペアをルックアップ配列に追加することです。
上記の例では、(検索する場所ではなく)検索対象の連結が「オンザフライ」で行われます。
このような「配列数式」を使用できます
=INDEX('Sheet2'!B:B,MATCH(1,(A1='Sheet2'!A:A)*(C1='Sheet2'!C:C),0))
CTRL+SHIFT+ENTER
....または、別のINDEX関数を追加して、「配列を入力」する必要がないようにすることもできます。
=INDEX('Sheet2'!B:B,MATCH(1,INDEX((A1='Sheet2'!A:A)*(C1='Sheet2'!C:C),0),0))
または別の方法は、このようなLOOKUPを使用することです
=LOOKUP(2,1/(A1='Sheet2'!A:A)/(C1='Sheet2'!C:C),'Sheet2'!B:B)
後者の方法では、複数ある場合はlast一致します......
配列を使用せず、ヘルパー列を使用しないソリューションは次のとおりです。
<i>=INDEX(Table[returnColumnName],
MATCH(1, INDEX((Table[lookupColumn1] = "arraysAreSlow") *
(Table[lookupColumn2] = "avoidWherePossible"), 0, 1), 0))</i>
グリッドルックアップを実行するより高度なソリューションを次に示します。
<i>=INDEX(Table,
MATCH(1, INDEX((Table[lookupColumn1] = "arraysAreSlow") *
(Table[lookupColumn2] = "avoidWherePossible"), 0, 1), 0),
MATCH("returnColumnName", Table[#Headers],0))</i>