我在Excel中有一个名为Table1
的三列表,如下所示:
给定两个值(每个输入变量一个),一个值必须完全等于第一列(2、4、6或8)中的任何数字,必须在单元格F2中键入,另一个值可以是第二列中最小(1)和最大(25)个数字之间的任意数,并且必须在单元格F3中键入,我想在第三列中找到相应的值。如果表的第二列中没有为第二个变量键入的值,则选择下一行的输出值。
例如,假设查找值是4
(对于第一列)和10
(对于第二列),那么输出应该是E
,因为4
和10
分别存在于第一列和第二列中,并且带有输出E
的行对应于输入的这些值。
另一个例子。假设查找值是8
(对于第一列)和17
(对于第二列),那么输出应该是K
;而不是J
,因为后者对应于第二列的值15,这严格地小于17
;所以输出是K
,因为它对应于紧接(或大于) 17
之后的值,即20
。
我的尝试
为了限制用户可以选择的可用值,我可以创建数据验证的单元格.为了在第一列中选择值,数据验证将按list
类型进行,并且等于2, 4, 6, 8
;这样的单元格将是F2。如下所示:
为了选择第二列中的值,数据验证将是whole number
类型,minimum
值为1
,maximum
值为25
。如下所示:
现在是查找公式。在googling搜索之后,我发现使用两个输入条件执行查找任务被称为双向查找。使用INDEX
和MATCH
函数,我成功地执行了双向查找,不幸的是,公式只允许精确的匹配,所以当第一个和第二个输入值是4
和10
时,它工作得很好,但是当它们是8
和17
时,就不起作用了。公式如下,它位于单元格F4中:
{=INDEX(Table1[Output], MATCH($F$2 & "|" & $F$3, Table1[1st input variable] & "|" & Table1[2nd input variable], 0))}
(花括号的存在意味着我们必须使用Ctrl + Shift + Enter
而不是Enter
输入公式。)
下面是第一个成功例子的截图:
下面是第二个失败示例的屏幕截图:
我尝试将MATCH函数的第三个参数从0更改为1,但它返回J
(它对应于第二列中的15,但17 < 15),而不是K
(后者对应于20,因为17 > 20和20是最接近它之后的17的值)。
我怎样才能实现我想要的?
发布于 2021-10-19 05:24:18
如果您有Excel 365,那么您可以使用新的Filter
-function:
=INDEX(FILTER(Table1[output],(Table1[1st Input variable]=first)*(Table1[2nd input variable]>=second),"no result"),1)
我将F3命名为"first“,F4命名为"second”。
FILTER
返回以下所有输出值
INDEX
选择筛选结果的第一行。
发布于 2021-10-19 05:25:26
这不是最好的方法,但你可以绕过第二个输入来满足你的需求。在您的示例中,所有的值都是5的倍数。只需使用IF为数字1创建一个异常即可。
以下是我尝试过的:
={INDEX($C$1:$C$12;MATCH(F7&IF(ROUNDUP(G7/5;0)=1;1;ROUNDUP(G7/5;0)*5);$A$1:$A$12&$B$1:$B$12;0))}
注意到这是一个数组公式。
https://stackoverflow.com/questions/69631418
复制