如何用Excel的VSTACK函数计算日期区间内每日订单商品总和?
调整VSTACK公式实现区间日期的订单商品求和
问题分析
原公式仅能精准匹配日期列与当前日期完全相等的订单,无法识别当前日期处于订单日期区间内的情况,因此只能展示起始/结束日期的数值。
调整方案(分两种数据结构场景)
场景1:订单数据含单独的起始、结束日期列
假设你的订单数据结构为:
- A列:订单起始日期
- B列:订单结束日期
- C列:商品数量
- D列:订单类型(值为"PO")
使用以下公式替换原公式:
=VSTACK("PO", MAP(H2:H430, LAMBDA(current_date, SUMIFS(C2:C78, D2:D78, "PO", A2:A78, "<="¤t_date, B2:B78, ">="¤t_date))))
改动说明:
- 移除原公式中冗余的
BYCOL遍历逻辑,直接通过SUMIFS添加区间判断条件:A2:A78 <= current_date且B2:B78 >= current_date,确保当前日期处于订单区间内的所有PO订单都被纳入求和范围。
场景2:订单日期区间分散在多列中(每行A-E列是订单覆盖的所有日期)
若你的订单数据中,每行的A到E列是该订单覆盖的所有日期,使用以下公式:
=VSTACK("PO", MAP(H2:H430, LAMBDA(current_date, SUM(IF((D2:D78="PO")*(MMULT(--(A2:E78=current_date), SEQUENCE(COLUMNS(A2:E78),,1,0))>0), C2:C78, 0)))))
改动说明:
- 用
MMULT函数判断当前日期是否出现在该行的A-E列中(只要有一列匹配即视为符合区间条件) - 结合订单类型为"PO"的筛选条件,对符合要求的商品数量列求和
内容的提问来源于stack exchange,提问作者Eric Trillaud
相关产品推荐
相关产品推荐

