如何在Google Sheets中计算特定日历周归属某月份的天数?
计算特定日历周中归属指定月份的天数
核心思路
先定位目标日历周的起止日期,再计算该日期区间与目标月份的重叠天数,用MAX/MIN取两个区间的交集后计算天数。
假设参数
设单元格对应内容:
A1:目标年份(如2022)B1:目标日历周(如48)C1:目标月份(如12)- 周起始为周一(对应
WEEKDAY函数参数2,若需周日起始可调整参数为1)
完整公式
=MAX(0,MIN(DATE(A1,1,1)+B1*7-WEEKDAY(DATE(A1,1,1),2),DATE(A1,C1+1,0)) - MAX(DATE(A1,1,1)+B1*7-WEEKDAY(DATE(A1,1,1),2)-6,DATE(A1,C1,1)) +1)
公式拆解
- 计算目标周起止日期
- 周第一天:
DATE(A1,1,1)+B1*7-WEEKDAY(DATE(A1,1,1),2)-6 - 周最后一天:
DATE(A1,1,1)+B1*7-WEEKDAY(DATE(A1,1,1),2)
- 周第一天:
- 定位目标月份边界
- 目标月第一天:
DATE(A1,C1,1) - 目标月最后一天:
DATE(A1,C1+1,0)(日参数为0时返回上月最后一天,即C1月的最后一天)
- 目标月第一天:
- 计算重叠天数
- 取两个区间的交集起始:
MAX(周第一天, 目标月第一天) - 取两个区间的交集结束:
MIN(周最后一天, 目标月最后一天) - 用
MAX(0, ...)避免无重叠时返回负数,最终天数=结束日-起始日+1
- 取两个区间的交集起始:
示例验证
输入A1=2022、B1=48、C1=12:
- 目标周起止:2022-11-28 至 2022-12-04
- 目标月边界:2022-12-01 至 2022-12-31
- 重叠区间:2022-12-01 至 2022-12-04,天数=4,与预期一致
周日起始周的调整
若周起始为周日(WEEKDAY参数1),将公式中周起止的计算替换为:
- 周第一天:
DATE(A1,1,1)+B1*7-WEEKDAY(DATE(A1,1,1),1) - 周最后一天:
DATE(A1,1,1)+B1*7-WEEKDAY(DATE(A1,1,1),1)+6
内容的提问来源于stack exchange,提问作者johny
相关产品推荐
相关产品推荐

