这是我的第一个问题...............
问题:- 我在 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 号的第一个星期日之间的最长间隔是多少。从经验上看,每年至少有一个,如果不是两个的话,所以较小的数字可能同样有效。