我想要实现的目标的示例:
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 列中取出每个数字,然后确定它属于哪一行 A,如果条件是数字 E >B 且 <=D(使用每行都有不同值的整个范围 B1:D999)。
F 列将返回 E 列数字的行号 A。
如果 B 列和 D 列的每一行都是我的标准,如 B1<=D1、B2<=D2、B3<=D3 等,我想比较 E 列中的每个数字,看看它们属于哪个范围。例如,E6=40,该数字属于 B12<=D12 范围,在 A12 行中的值为 10)。因此,我想从 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
弥补“缺失范围”。