Index/Match またはその他の関数を使用して、参照値の左側のセルデータを取得する方法

Index/Match またはその他の関数を使用して、参照値の左側のセルデータを取得する方法

私は と の組み合わせを使用してINDEXMATCH次のことを機能させようとしています。

ここに画像の説明を入力してください

画像の下部に「High」値があることがわかります。ここで私がやろうとしているのは、左側のテーブルを検索してその値を見つけることです。次に、出力を「Floorplan」名にしたいのです。つまり、基本的に、J14 に「D」が表示されるようにしたいのです。

最初は試してみましたVLOOKUPが、最初の列はルックアップ値である必要があることがわかったので、インデックス/一致ルートを試しています。しかし、うまく動作しません。フィードバックをいただければ幸いです。

使用される式:

=INDEX($A$9:$D$15,MATCH($I$14,A9:D15,4),1)

答え1

コメントされているようにgns100MATCH()一致範囲が単一の列 (または行) ではなかったため失敗しました。また、使用はXLOOKUP()ここでもうまく機能しますが、詳細により、時々不適切になることがあります。これは、INDEX/MATCH同じ基本が与えられているという点で、同じ基本的なアプローチに従います。つまり、検索値、その値を検索する場所、返すものを見つけるために移動する場所などです。

VLOOKUP()何らかの理由でそれが好みであれば、これでうまくいきます。INDEX/MATCHがある Excel のどのバージョンでも機能するVLOOKUP()と思いますので、示されている小さな調整を行うgns100と、古いバージョンとの互換性が必要なときにいつでもそれを使用できます。

VLOOKUP()は、2 番目のパラメータの仮想テーブルを作成するために使用しINDEX()、そのテーブルにはルックアップ列と結果列のみがその順序で含まれます。たとえば、次のようになります。

=VLOOKUP($I$14,  INDEX(A9:D15, ROW(INDIRECT("1:"&ROWS(A9:D15)) ),{4,1}),  2,  FALSE)

{4,1}(「配列定数」)はINDEX()、最初に 4 番目の列を返し、次に 1 番目の列を返すように指示し、(仮想の) 2 列ルックアップ テーブルを提供します。このテーブルでは、VLOOKUP()結果を「右に見て」見つけることができます。したがって、まだ「右に見て」いますが、効果は「左に見て」います。

真ん中の部分は、ROW(INDIRECT("1:"&ROWS(A9:D15))単に「1」から任意の値までのシリーズを取得する昔ながらの方法で、すべての行を返すように指定します。最近では、単純な方法でもSEQUENCE( ROWS(A1:D15) )かまいませんが、それより前までは戻りませんXLOOKUP()。この部分が必ずある理由は、配列定数を直接使用して行または列 (または他の用途では「領域」) を指定する場合、または計算中に配列定数を生成するものを指定する場合、Excel では、(,,行パラメータに何も指定しない) または,0,(行パラメータに「0」を指定する) など、どちらも Excel に「すべての」行を指定するのではなく、他のパラメータを完全に指定する必要があるためです。

ああ、昔は不快だった。愛しなくXLOOKUP()ちゃFILTER()

行についても、少し異なる構成ではありますが、同様の手法を使用して、INDEX()下から上、下、つまり最後の行が最初になり、最初の行が最後になる仮想テーブルを作成できます。これにより、「最新の日付」や、下から上へ検索したい類似のものを検索できます。

これらはすべて、古いバージョンとの互換性のためだけのものであり、XLOOKUP()まれな状況でのみ必要な機能を実行できないためです。また、FILTER()現在実行されている機能と同様のアプローチも、もちろん、古いバージョンとの互換性のためにのみ必要です。

これを行うことができる興味深い機能の 1 つINDEX()は、まだ廃止されていない (少なくとも完全に廃止されているわけではない (新しい配列処理関数によってこれも廃止される可能性があると思う)) ことです。 のように左右を上下に、またはその逆だけでなく、4 つのバリエーションすべてで範囲を転置できますTRANSPOSE()。しかし、数百万の Excel ヘルプ サイトでこれを実行する方法について聞いたことがないという事実は、実際の世界ではおそらく必要ないことを意味しています。

関連情報