EXCEL中用函数查找显示同时满足多个条件的最小值和对应数据行的字段内容

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EXCEL中用函数查找显示同时满足多个条件的最小值和对应数据行的字段内容相关的知识,希望对你有一定的参考价值。

数据表如图左边,想要在右边用公式直接得到满足姓名和科目最好的年级排名和对应的考试名称

H2

=MINIFS(E:E,C:C,"总分",A:A,G2)

I2

=INDEX(B:B,MATCH(H2,E:E,0))

J2

=MINIFS(E:E,C:C,"语文",A:A,G2)

K2

=INDEX(B:B,MATCH(J2,E:E,0))

公式可以一并下拉

参考技术A 在H2中输入或复制粘贴下列数组公式
=MIN(IF(($A$2:$A$17=$G2)*($C$2:$C$17=LEFT(H$1,2)),$E$2:$E$17))
按三键CTRL+SHIFT+ENTER结束公式输入
下拉填充
或普通公式
=minifs($e:$e,$a:$a,$g2,$c:$c,left(h$1,2))
下拉填充
在I2中输入或复制粘贴下列公式
=LOOKUP(1,0/(($A$2:$A$17=$G2)*($E$2:$E$17=H2)),$B$2:$B$17)
下拉填充
复制H2:I3,粘贴到J2即可。

在 Excel 中查找符合条件的数据,查找最小日期,返回第三个值

【中文标题】在 Excel 中查找符合条件的数据,查找最小日期,返回第三个值【英文标题】:Find data in Excel that meets criteria, find min date, return a third value 【发布时间】:2018-09-25 01:59:18 【问题描述】:

我在 Excel 中有 4 列。

我想拉出所有落后的工作并显示客户名称。

A 列 = 客户名称

B 列 = 他们的临时服务日期

C 列 = 服务的最终状态(“已完成”、“立即预订!”、“稍后预订”)

D 列 = 年度服务最紧急的客户

我只对“立即预订!”感兴趣C列中的条目。然后我需要将其与B列交叉引用以找到最早的日期。当找到最早的日期时,我需要它来检查 A 列中的客户名称并返回 D 列中的客户名称

【问题讨论】:

这种类型的问题可以通过少量的 CSV 数据得到极大的帮助,更重要的是,你自己的尝试。您可能希望扩展俗语“放弃任何工作”的含义-您的意思是应该将它们写入不同的工作表吗?他们是否应该设置一个列标志,以便可以使用自动过滤器找到它们?等等 感谢 halfer-我在加载 csv 数据图像以帮助解释时遇到了困难(而且我事先尝试了一段时间但没有成功)。谢天谢地,Sadjad 能够给我一个完美的解决方案——尽管我的解释有点糟糕。感谢您的建议。 啊伟大的埃莉诺,很高兴你修好了它。如果它引导您找到解决方案,请考虑accepting Sadjad's answer。尽管这个问题似乎效果很好,但值得注意的是,包含无效尝试的问题通常更受读者欢迎。 嗨 halfer - 我在发布后注意到它没有通过最旧的日期 - 我正在尝试加载图像,但它告诉我我还没有权限这样做- 为了更容易展示。他让我成功了一半以上! :-) 好的。我建议回滚您的编辑并将其添加为附录(如果它确实是与原始问题相关的小事)或提出新问题。我的猜测是,您的新问题状态会使 Sadjad 所做的工作无效,这对他来说是不公平的。虽然我不是 Excel 用户,所以我无法做出这样的判断。也许您可以在萨贾德的回答下发表评论,看看他是否可以做出调整? 【参考方案1】:

添加第五列 (E)。在该列中编写一个公式,返回“立即预订!”的人的日期。 (=if(C2="Book in now!", B2, ""))。现在您要做的就是在 E 列中找到最小值,并且由于 vlookup 不能向后工作,请使用 IndexMatch 函数的组合来查找名称(请参阅:here)。请注意,在我的解决方案中,您只会获得 1 个姓名,而不是所有紧急客户。

【讨论】:

非常感谢萨贾德 - 我现在已经开始工作了 - 完美! :-) 抱歉,Sadjad - 它仍然需要调整,因为它正在通过一家公司,但不是最早日期的公司。如果您能想到我可以如何做到这一点,将不胜感激!我现在已经设法添加了一张图片。 @EleanorDangerfield 对不起,我的错!公式返回满足条件的第一个位置。所以,如果你想要最早的,那么你可以简单地根据日期对列表进行排序。我排序不方便,那我们应该尝试寻找其他解决方案【参考方案2】:

公式有点长,但我相信这种复杂性需要它:

=INDEX(B24:B28,MIN(IF((D24:D28=D30)*(C24:C28=MIN(IF(D24:D28=D30,C24:C28))),ROW(B24:B28)-ROW()+1,9^99)))

这个公式要作为数组公式输入,即输入公式后,不要按Enter,而是按住Ctrl+Shift 然后按 Enter

最里面的 IF 基本上是找到与 D 列“现在预订!!”相关的最早日期,然后最外面的 IF 找到两个日期都与之前找到的最早日期匹配的行并且 D 列的值是“现在预订!!”。如果不首先计算最早的日期,那么无论 D 列中的内容是什么,它都会找到最早的日期,这不一定是最早的“现在预订!!”日期。


如果您可以使用 E 列,则可以将内部 IF 删除为以下内容:

=INDEX(B24:B28,MIN(IF((D24:D28=D30)*(C24:C28=MIN(E24:E28)),ROW(B24:B28)-ROW()+1,9^99)))

(但它仍然是一个数组公式)

【讨论】:

以上是关于EXCEL中用函数查找显示同时满足多个条件的最小值和对应数据行的字段内容的主要内容,如果未能解决你的问题,请参考以下文章

excel 满足一个条件 显示对应行倒数第二行?

excel中if函数若满足条件返回“是”,不满足条件无返回值怎么写

请问EXCEL表格中用vlookup函数,如何同时引用多个表格的多个范围的数据?

如何跨表格取满足条件的某一列数据的最小日期的函数

多个条件查找最小和最大日期值

Excel用函数求同一行名字相同的数据最小值