在是两个给定值之间的范围内寻找一个值(Looking up a value in a range t

2019-10-23 11:50发布

我有以下公式:

=INDEX(SPEC!$C$5:$C$650,MATCH(B3,SPEC!$F$5:$G$5,0))

它工作正常,但$F$5具有的值为1和$G$5拥有的100的值。所以,如果我输入之间即任何东西:2-99然后它不工作。

是否有使用的一种方式<=>=某处得到它也期待在2和99之间的数字作为我现在的公式只看着我提到的那些细胞,而不是两者之间的一切。

Answer 1:

没有看到您的具体的工作簿,我不得不创建一个虚拟版本,它可能不完全复制你的(见下文)。

在此基础上,将有只有一个值,该值介于$F$5$G$5在值范围(在我的情况D5:D650 ),下面应该工作。

=INDEX(C5:C650, SUMPRODUCT(--(D5:D650<=G5),--(D5:D650>=F5), ROW(A1:A646)))

说明:

D5:D650<=G5 = {FALSE, FALSE, FALSE, FALSE, TRUE, FALSE...}

使用这种前两减号,转换的“真”的结果为“1”的值和“假”结果成“0”值

因此,在的情况下, D5:D650<=G5 = {FALSE, FALSE, FALSE, FALSE, TRUE, FALSE...}将其转换到这个{0, 0, 0, 0, 1, 0...}

下一个标准--(D5:D650>=F5)等同于{1, 1, 1, 1, 1, 1...}

最后, ROW(A1:A646)元件,只是创建一个数组{1, 2, 3, 4, 5, 6...}

然后SUMPRODUCT用于查找,例如用于阵列中的乘积为0 * 1 * 1 = 0的第一个元素阵列的乘积的总和,但对于FIFT元件 - 符合你的标准之一 - 的乘积为1 * 1 * 5,它给你的行号。

INDEX然后给你,你正在寻找的答案。



文章来源: Looking up a value in a range that is between two given values