在 Excel 中查找符合条件的数据,查找最小日期,return 第三个值
Find data in Excel that meets criteria, find min date, return a third value
我在 Excel 中有 4 列。
我想拉出任何落后的工作并显示客户名称。
A 列 = 客户名称
B 列 = 他们的临时服务日期
C 列 = 服务的最终状态("completed"、"book in now!"、"book in later")
D 列 = 年度服务最紧急的客户
我只对 C 列中的 "Book in now!" 条目感兴趣。然后我需要将其与 B 列交叉引用以找到最早的日期。当它找到最早的日期时,我需要它检查 A 列中的客户名称和 return D 列中的客户名称
添加第五列 (E)。在该列中写一个公式 returns 那些 "Book in now!" (=if(C2="Book in now!", B2, "")
) 的人的日期。现在你应该做的就是在 E 列中找到最小值,因为 vlookup
不能反向工作,使用 Index
和 Match
函数的组合来找到名称(参见:here).请注意,在我的解决方案中,您只能得到 1 个名字,而不是所有紧急客户。
有点长的公式,但我认为它对于这种复杂性是必需的:
=INDEX(B24:B28,MIN(IF((D24:D28=D30)*(C24:C28=MIN(IF(D24:D28=D30,C24:C28))),ROW(B24:B28)-ROW()+1,9^99)))
这个公式是以数组公式形式输入的,即输入公式后不要按回车,而是按住Ctrl +Shift 然后按 Enter.
最里面的 IF 基本上是找到与 D 列相关的最早日期 'book in now!!',然后最外面的 IF 找到两个日期都与先前找到的最早日期匹配的行并且 D 列的值为 'book in now!!'。如果不先计算最早的日期,那么无论D列是什么,它都会找到最早的日期,不一定是最早的'book in now!!'日期。
如果你可以使用E列,那么内部的IF可以被删除成这样:
=INDEX(B24:B28,MIN(IF((D24:D28=D30)*(C24:C28=MIN(E24:E28)),ROW(B24:B28)-ROW()+1,9^99)))
(但还是数组公式)
我在 Excel 中有 4 列。
我想拉出任何落后的工作并显示客户名称。
A 列 = 客户名称
B 列 = 他们的临时服务日期
C 列 = 服务的最终状态("completed"、"book in now!"、"book in later")
D 列 = 年度服务最紧急的客户
我只对 C 列中的 "Book in now!" 条目感兴趣。然后我需要将其与 B 列交叉引用以找到最早的日期。当它找到最早的日期时,我需要它检查 A 列中的客户名称和 return D 列中的客户名称
添加第五列 (E)。在该列中写一个公式 returns 那些 "Book in now!" (=if(C2="Book in now!", B2, "")
) 的人的日期。现在你应该做的就是在 E 列中找到最小值,因为 vlookup
不能反向工作,使用 Index
和 Match
函数的组合来找到名称(参见:here).请注意,在我的解决方案中,您只能得到 1 个名字,而不是所有紧急客户。
有点长的公式,但我认为它对于这种复杂性是必需的:
=INDEX(B24:B28,MIN(IF((D24:D28=D30)*(C24:C28=MIN(IF(D24:D28=D30,C24:C28))),ROW(B24:B28)-ROW()+1,9^99)))
这个公式是以数组公式形式输入的,即输入公式后不要按回车,而是按住Ctrl +Shift 然后按 Enter.
最里面的 IF 基本上是找到与 D 列相关的最早日期 'book in now!!',然后最外面的 IF 找到两个日期都与先前找到的最早日期匹配的行并且 D 列的值为 'book in now!!'。如果不先计算最早的日期,那么无论D列是什么,它都会找到最早的日期,不一定是最早的'book in now!!'日期。
如果你可以使用E列,那么内部的IF可以被删除成这样:
=INDEX(B24:B28,MIN(IF((D24:D28=D30)*(C24:C28=MIN(E24:E28)),ROW(B24:B28)-ROW()+1,9^99)))
(但还是数组公式)