日期的 min 和 if 组合

日期的 min 和 if 组合

这是我的第一个问题...............

问题:- 我在 A 列中有 100 个日期。我想在任意月份的 1 号记录下周日。在单元格 B1 中我输入了一个公式,=IF(AND(WEEKDAY(A:A)=1,DAY(A:A)=1),A:A)然后将其拖到 B 列,这样我就得到了所需的日期和 FALSE 值。然后在 C1 中我使用了一个公式,=MIN(B:B)得到了准确的所需日期。

但我需要一个单一公式,所以我应用了一个公式,=MIN(IF(AND(WEEKDAY(A:A)=1,DAY(A:A)=1),A:A))但它不起作用。

我想知道是否有人能帮我正确地得到一个公式。谢谢!问候,HR

答案1

MIN(IF你的函数不起作用的原因是因为你不能使用AND这些类型的公式,因为AND它将返回一个结果而不是所需的数组 - 你可以使用 * 来模拟AND或使用嵌套的 IF,例如

=MIN(IF((WEEKDAY(A:A)=1)*(DAY(A:A)=1),A:A))

或者

=MIN(IF(WEEKDAY(A:A)=1,IF(DAY(A:A)=1,A:A)))

.....但如果你想得到下个月的第一个星期日在 A2 中的任何日期之后,您都可以使用以下非数组公式:

=EOMONTH(A2,MATCH(1,WEEKDAY(EOMONTH(A2,{0,1,2,3,4,5,6,7,8,9,10,11,12,13})+1),0)-1)+1

实例之间的时间间隔不会超过 14 个月,因此您可以检查接下来的 14 个月的第一天,并取第一个星期日

答案2

我认为您想要的是今天之后的第一个星期日,该星期日是某个月的第一天。如果是这样,则以下大批公式将返回该日期:

=INDEX(ROW(INDIRECT(TODAY()&":"&TODAY()+1000)),MATCH(1,(DAY(ROW(INDIRECT(TODAY()&":"&TODAY()+1000)))=1)*(WEEKDAY(ROW(INDIRECT(TODAY()&":"&TODAY()+1000)))=1),0))

要输入大批公式,按住ctrl-shift并点击enter。如果你操作正确,Excel 会将括号{...}在公式栏中您可以看到的公式周围。

公式的这一部分:

ROW(INDIRECT(TODAY()&":"&TODAY()+1000))

创建一个日期数组,从今天开始,向前延伸 1000 天。我选择 1000 天是因为我不知道一个月 1 号的第一个星期日之间的最长间隔是多少。从经验上看,每年至少有一个,如果不是两个的话,所以较小的数字可能同样有效。

相关内容