查找两个给定值之间的范围内的值

时间:2015-06-23 13:37:00

标签: excel excel-formula

我有以下公式:

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

它工作正常,但$F$5的值为1,而$G$5的值为100.因此,如果我在两者之间键入任何内容,即:2-99,则它不起作用。

有没有办法在某处使用<=>=来查看2到99之间的数字,因为我当前的公式只查看我提到的那些单元格,而不是介于两者之间的所有单元格

1 个答案:

答案 0 :(得分:1)

如果没有看到您的确切工作簿,我必须创建一个可能无法完全复制您的虚拟版本(见下文)。

Screenshot of my example workbook

根据您的值范围内$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...}

在此之前使用两个减号,将“True”的结果转换为值“1”,将“False”的结果转换为值“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然后为您提供您正在寻找的答案。