谷歌表格:基于工作日周一计算销售额周环比变化的问题
谷歌表格计算周一销售额周环比(跳过无数据节假日周一)
解决方案
假设你的表格结构为:
- A列:日期(需设置为日期格式)
- B列:对应日期的销售额
- C列:用于计算周环比差值(当前周一销售额 - 上一个存在数据的周一销售额)
在C2单元格输入以下公式,下拉填充即可:
=IF(WEEKDAY(A2,2)=1, B2 - IFERROR(XLOOKUP(MAX(FILTER(A$1:A1, WEEKDAY(A$1:A1,2)=1, A$1:A1 < A2)), A$1:A1, B$1:A1), ""), "")
公式逻辑说明
WEEKDAY(A2,2)=1:判断当前行是否为周一(参数2设定周一=1,周日=7),非周一的行返回空值MAX(FILTER(A$1:A1, WEEKDAY(A$1:A1,2)=1, A$1:A1 < A2)):筛选当前行之前所有是周一且日期早于当前日期的记录,取其中最大的日期(即最近的上一个有数据的周一)XLOOKUP(...):根据找到的上一个周一日期,匹配对应的销售额IFERROR(..., ""):处理第一个周一的情况,若没有上一个周一数据,返回空值(你也可以改成0,让结果等于当前销售额)
替代方案(用INDEX+MATCH实现)
如果习惯用INDEX和MATCH组合,可使用以下公式:
=IF(WEEKDAY(A2,2)=1, B2 - IFERROR(INDEX(B$1:A1, MATCH(MAX(FILTER(A$1:A1, WEEKDAY(A$1:A1,2)=1, A$1:A1 < A2)), A$1:A1, 0)), ""), "")
注意事项
- 确保A列的日期是日期格式,而非文本格式,否则函数无法正确识别日期大小
- 若需要将差值转为百分比(环比增长率),可将公式改为:
=IF(WEEKDAY(A2,2)=1, (B2 - IFERROR(XLOOKUP(MAX(FILTER(A$1:A1, WEEKDAY(A$1:A1,2)=1, A$1:A1 < A2)), A$1:A1, B$1:A1), B2))/IFERROR(XLOOKUP(MAX(FILTER(A$1:A1, WEEKDAY(A$1:A1,2)=1, A$1:A1 < A2)), A$1:A1, B$1:A1), B2), "")(避免除以0的情况)
内容的提问来源于stack exchange,提问作者vk-code
相关产品推荐
相关产品推荐

