You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Excel中统计日期范围内指定日期(1日、15日)的出现次数

Excel统计日期范围内1日和15日出现次数的最优方法

方法一:SUMPRODUCT数组公式(推荐,无辅助列)

直接用一个公式就能搞定,假设开始日期存在A1,结束日期在B1,输入以下公式:

=SUMPRODUCT(--(DAY(ROW(INDIRECT(A1&":"&B1)))={1,15}))

公式拆解:

  • ROW(INDIRECT(A1&":"&B1)):生成起始到结束日期之间的所有日期序列(日常使用中,只要日期范围不超过Excel最大行数1048576就没问题)
  • DAY(...):提取每个日期的“日”部分(比如2022/4/1提取出1)
  • --(DAY(...)={1,15}):判断每个日期的日数是否是1或15,返回的TRUE/FALSE通过--转换成1/0
  • SUMPRODUCT:把所有符合条件的1加起来,就是总次数

你提到的2022年4月1日到2022年6月17日的例子,代入公式会直接返回6,完全符合预期。

方法二:辅助列+COUNTIFS(适合新手)

如果觉得数组公式不好理解,可借助辅助列:

  1. 先在表格里列出日期范围内的所有日期(比如放在C列)
  2. 在D列输入公式=DAY(C1),下拉填充到所有日期行,提取每个日期的日数
  3. 最后用公式统计:
=SUM(COUNTIFS(D:D,{1,15}))

或者拆成两个COUNTIF相加:

=COUNTIFS(D:D,1)+COUNTIFS(D:D,15)

方法三:大日期范围适配方案

如果日期范围极大,超过ROW函数的行数限制,可改用NETWORKDAYS.INTL反向计算(把非1/15的日期都算作工作日,用总天数减去工作日数得到目标次数):

=DATEDIF(A1,B1,"d")+1 - NETWORKDAYS.INTL(A1,B1,"0000000",ROW(INDIRECT(A1&":"&B1))*(DAY(ROW(INDIRECT(A1&":"&B1)))<>1)*(DAY(ROW(INDIRECT(A1&":"&B1)))<>15))

不过这个方法复杂度高,日常场景优先用前两种。

内容的提问来源于stack exchange,提问作者Pankaj-Talesara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 12:21:11