首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Excel中双向查找返回值或下一个最近值

在Excel中双向查找返回值或下一个最近值
EN

Stack Overflow用户
提问于 2021-10-19 13:08:43
回答 2查看 248关注 0票数 0

我在Excel中有一个名为Table1的三列表,如下所示:

给定两个值(每个输入变量一个),一个值必须完全等于第一列(2、4、6或8)中的任何数字,必须在单元格F2中键入,另一个值可以是第二列中最小(1)和最大(25)个数字之间的任意数,并且必须在单元格F3中键入,我想在第三列中找到相应的值。如果表的第二列中没有为第二个变量键入的值,则选择下一行的输出值。

例如,假设查找值是4 (对于第一列)和10 (对于第二列),那么输出应该是E,因为410分别存在于第一列和第二列中,并且带有输出E的行对应于输入的这些值。

另一个例子。假设查找值是8 (对于第一列)和17 (对于第二列),那么输出应该是K;而不是J,因为后者对应于第二列的值15,这严格地小于17;所以输出是K,因为它对应于紧接(或大于) 17之后的值,即20

我的尝试

为了限制用户可以选择的可用值,我可以创建数据验证的单元格.为了在第一列中选择值,数据验证将按list类型进行,并且等于2, 4, 6, 8;这样的单元格将是F2。如下所示:

为了选择第二列中的值,数据验证将是whole number类型,minimum值为1maximum值为25。如下所示:

现在是查找公式。在googling搜索之后,我发现使用两个输入条件执行查找任务被称为双向查找。使用INDEXMATCH函数,我成功地执行了双向查找,不幸的是,公式只允许精确的匹配,所以当第一个和第二个输入值是410时,它工作得很好,但是当它们是817时,就不起作用了。公式如下,它位于单元格F4中:

代码语言:javascript
代码运行次数:0
运行
复制
{=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的值)。

我怎样才能实现我想要的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-19 13: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返回以下所有输出值

  • 列A=F3
  • 列B >=的值F4.

INDEX选择筛选结果的第一行。

票数 2
EN

Stack Overflow用户

发布于 2021-10-19 13:25:26

这不是最好的方法,但你可以绕过第二个输入来满足你的需求。在您的示例中,所有的值都是5的倍数。只需使用IF为数字1创建一个异常即可。

以下是我尝试过的:

代码语言:javascript
代码运行次数:0
运行
复制
={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))}

注意到这是一个数组公式

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69631418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档