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

时间:2018-04-15 04:31:02

标签: excel if-statement count min

enter image description here

我在Excel中有4列。

我想撤出任何落后的工作并显示客户名称。

A栏=客户名称

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

C栏=最终服务状态(“已完成”,“现在预订!”,“以后的书”)

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

有点长的公式,但我认为这是复杂性所必需的:

=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

enter image description here

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

如果你可以使用E列,那么内部IF可以被移除到这样的东西:

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

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

enter image description here

相关问题