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

Posted

技术标签:

【中文标题】在 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 中查找具有多种数据类型的行中的最小日期

MFC ListCtrl如何查找某一行的上一行或者下一行

VBS读取txt文档数据查找Excel中单元格数据符合条件的剪切到工作表2中

电源查询:如果满足条件,则查找最小日期

如何查找excel一行中最小值