値のセットを取得して複数の基準行と比較する方法

値のセットを取得して複数の基準行と比較する方法

達成したいことの例:

例

A  B  C   D  E  F
1  1  <=  2  2  1
2  2  <=  4  23 8
3  4  <=  7  5  3
4  7  <=  10 40 10
5  10 <=  12 7  3
6  12 <=  17 8  4
7  17 <=  19 12 5

数値 E が >​​B かつ <=D であるという条件の場合、E 列から各数値を取得し、それがどの行 A に属しているかを判断したいと思います (各行に異なる値を持つ範囲 B1:D999 全体を使用)。

F 列は、E 列の数字の行番号 A を返します。

B 列と D 列のすべての行が、B1<=D1、B2<=D2、B3<=D3 などのように私の基準である場合、列 E の各数値を比較して、どの範囲に該当するかを確認したいと思います。 たとえば、E6=40 の場合、その数値は、行 A12 の値が 10 である B12<=D12 の範囲に該当します。 そのため、E6 の横にあるセル F6 の A 行からその数値を取得したいと思います。 約 500 個の数値があり、B、D、E 列には小数も含まれ、A 列には整数のみが含まれます。

A3 行は 1 から 2 までの数字を意味し、A4 行は 2 より大きく 4 までの数字を意味します。したがって、数字 E3 は B3 列の数字より大きく、D3 列の数字より小さいか等しいため、行 3 の範囲内に含まれ、F 値は A3 = 1 と同じになります。

答え1

これは p のバリエーションです。フィドットのアプローチです。昇順でルックアップを行うと、間違った範囲が捕捉され、中間範囲の値を調整すると、範囲の境界にある値の結果が失われます。降順ルックアップを行う場合は、通常の MATCH が機能します。

表を列 A、B、または D で降順に並べ替えます。F3 の数式は次のようになります。

=INDEX(A:A,MATCH(E3,D:D,-1),)

これらの列に他のコンテンツがある場合は、範囲参照を絶対アドレスにします ($A$3:$A$12 や $D$3:$D$12 など)。検索には列 A と D のみが必要なので、例では列 B または C のコンテンツは入力しませんでした。

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

列 A が単なるテーブル行識別子であり、昇順のままにできる場合は、さらに簡略化できます。MATCH は、昇順で列 A に対応するテーブル内のシーケンス番号を返すため、数式は次のように簡略化できます。

=MATCH(E3,$D$3:$D$12,-1)

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

MATCH 結果が列 A のテーブル行インデックスと一致するためには、検索範囲を絶対参照で指定する必要があることに注意してください。

答え2

F3でこれを試してください:

=IFERROR(INDEX(A:A,MATCH(E3,D:D,0)),INDEX(A:A,MATCH(E3,D:D,1))+1)

ただし、以下を追加する必要があると思います:

A1  ---> -1
A2  ---> 0
D1  ---> 0
D2  ---> 1

「欠けている範囲」をカバーするためです。

関連情報