Pesetas74 Asked: 2021-03-03 03:07:37 +0800 CST2021-03-03 03:07:37 +0800 CST 2021-03-03 03:07:37 +0800 CST Excel:为每一行找到最近的(到参考的)日期 772 我不是 Excel 专家(到目前为止还不是),我一直很难找到以下问题的解决方案。我有一个表格,代表每个员工(B)的预定轮班日期(A),我试图提出一个公式,其结果应该是(对于每一行)该员工在给定参考后的下一个班次日期 (F1)。 我试过(在网上找到)LARGE+ COUNTIF(下面的公式),但结果是每一行的日期相同,而我想为每个员工找到“下一个日期”>参考日期(F1): C列中的公式如下: =IFERROR(LARGE($A$2:$A$12;COUNTIF($A$2:$A$12;">"&$F$1));""). 在 D 列中,我想得到的结果。 microsoft-excel worksheet-function 2 个回答 Voted ZygD 2021-03-03T03:20:41+08:002021-03-03T03:20:41+08:00 不确定这是否是最佳解决方案,但您可以使用数组公式(使用Ctrl++输入,而不是常规输入Shift):EnterEnter =INDEX($A$2:$A$8,MATCH(1,($B$2:$B$8=B2)*($A$2:$A$8>TODAY()),0)) 如果您有参考日期F1: =INDEX($A$2:$A$8,MATCH(1,($B$2:$B$8=B2)*($A$2:$A$8>$F$1),0)) Best Answer FlexYourData 2021-03-03T03:55:31+08:002021-03-03T03:55:31+08:00 如果您FILTER列出了 Employee 列与当前行上的 Employee 匹配的行的日期列表,并且 Shift 列中的日期大于参考日期,您将获得该员工的所有班次列表,其中日期为参考日之后。“下一个”班次只是该列表中最小的日期。 所以,你可以使用这个: =MIN(FILTER([Shift],([Emp]=[@Emp])*([Shift]>$F$2)))
不确定这是否是最佳解决方案,但您可以使用数组公式(使用Ctrl++输入,而不是常规输入Shift):EnterEnter
如果您有参考日期
F1
:如果您
FILTER
列出了 Employee 列与当前行上的 Employee 匹配的行的日期列表,并且 Shift 列中的日期大于参考日期,您将获得该员工的所有班次列表,其中日期为参考日之后。“下一个”班次只是该列表中最小的日期。所以,你可以使用这个: