如何统计两日期间指定星期几的天数(单单元格多星期输入)
统计两日期区间内指定多星期的总天数
针对你需要在单个单元格指定多个星期(如“周二,周三”或“3,4”),并统计两日期间对应星期天数的需求,以下是适配多星期输入的公式方案:
方案1:单元格输入星期名称(支持中文/英文)
假设:
- 开始日期存于单元格
A1 - 结束日期存于单元格
B1 - 指定星期(如“周二,周三”或“Tuesday,Wednesday”)存于单元格
C1
中文星期名称公式:
=SUMPRODUCT(--(ISNUMBER(MATCH(WEEKDAY(ROW(INDIRECT(A1&":"&B1))),MATCH(TRIM(MID(SUBSTITUTE(C1,",",REPT(" ",99)),(ROW(INDIRECT("1:"&LEN(C1)-LEN(SUBSTITUTE(C1,",",""))+1))-1)*99+1,99)),{"周日","周一","周二","周三","周四","周五","周六"},0),0)))
英文星期名称公式:
把公式中的中文星期数组替换为英文即可:
=SUMPRODUCT(--(ISNUMBER(MATCH(WEEKDAY(ROW(INDIRECT(A1&":"&B1))),MATCH(TRIM(MID(SUBSTITUTE(C1,",",REPT(" ",99)),(ROW(INDIRECT("1:"&LEN(C1)-LEN(SUBSTITUTE(C1,",",""))+1))-1)*99+1,99)),{"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"},0),0)))
公式逻辑:
- 通过
SUBSTITUTE+MID+TRIM拆分单个单元格中的多星期名称为独立项 - 用
MATCH将星期名称转换为WEEKDAY函数对应的数字(周日=1、周一=2…周六=7) - 用
MATCH+ISNUMBER判断区间内每个日期的星期数是否在目标列表中,最后用SUMPRODUCT求和符合条件的天数
方案2:单元格输入星期对应数字(如“3,4”对应周二、周三)
如果直接输入 WEEKDAY 对应的数字(周日=1、周一=2…周六=7),公式更简洁:
新版Excel(支持TEXTSPLIT函数):
=SUMPRODUCT(--(ISNUMBER(MATCH(WEEKDAY(ROW(INDIRECT(A1&":"&B1))),TEXTSPLIT(C1,","),0))))
旧版Excel(无TEXTSPLIT):
用拆分公式替代TEXTSPLIT:
=SUMPRODUCT(--(ISNUMBER(MATCH(WEEKDAY(ROW(INDIRECT(A1&":"&B1))),--TRIM(MID(SUBSTITUTE(C1,",",REPT(" ",99)),(ROW(INDIRECT("1:"&LEN(C1)-LEN(SUBSTITUTE(C1,",",""))+1))-1)*99+1,99)),0))))
公式逻辑:
- 将逗号分隔的数字拆分为数组
- 判断区间内每个日期的星期数是否在目标数字数组中,最终求和符合条件的天数
内容的提问来源于stack exchange,提问作者tempra
相关产品推荐
相关产品推荐

