1
场景背景
订单表里有日期列,老板要「每月销售额」和「本月合计」。难点是日期区间:月初到月末,天数每月不同。用 DATE(年,月,1) 和 EOMONTH 生成区间边界,SUMIFS 用 ">="&开始 和 "<="&结束 两个条件,就能自动适配大小月。
2
数据结构
共 2 个 Sheet3
解决步骤
1
第 1 步:生成月初日期
用 DATE(年, 月, 1) 得到当月第一天,年月可以引用单元格,改月份就自动变。
=DATE(2026,1,1)
2
第 2 步:生成月末日期
EOMONTH(月初, 0) 直接得到当月最后一天,2 月自动是 28 或 29 号。
=EOMONTH(B2,0)
3
第 3 步:用区间条件求和
SUMIFS 里写 ">="&月初 和 "<="&月末,注意 & 用来拼接日期值,不能直接写日期文字。
=SUMIFS(订单!G:G,订单!B:B,">="&B2,订单!B:B,"<="&C2)
4
第 4 步:也可以先加辅助列按月
辅助列 =TEXT(日期,"yyyy-mm") 得到月份文本,再用 SUMIF 按月汇总,写起来更直观。
=TEXT(B2,"yyyy-mm")
4
完整公式与逐段拆解
=SUMIFS(订单!G:G,订单!B:B,">="&B2,订单!B:B,"<="&C2)
订单!G:G求和区域:金额列">="&B2大于等于月初,& 把比较符和日期拼在一起订单!B:B,"<="&C2小于等于月末,两个条件一起卡住区间| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | 月份 | 月初 | 月末 | 合计 | |||
| 2 | 2026-01 | 2026-01-01 | 2026-01-31 | 2,198.00 | |||
| 3 | 2026-02 | 2026-02-01 | 2026-02-28 | 1,710.00 | |||
| 4 | 2026-03 | 2026-03-01 | 2026-03-31 | 1,249.00 | |||
| 5 | |||||||
| 6 | |||||||
| 7 | |||||||
| 8 | |||||||
| 9 | |||||||
| 10 |
当前表:月度汇总 · 公式单元格 D2 · 绿色底为公式,蓝色底为动态数组溢出结果
1 月合计 225 + 1798 + 175 = 2198,公式自动适配每个月天数
6
数据流向
数据流向演示1 / 4
来源订单!B2:B9
➜
去向区间判断
订单表的日期列
来源月度汇总!B2:C2
→
去向区间判断
月初 / 月末作为边界
来源订单!G2:G9
→
去向合计
落在区间内的行累加金额
来源合计
→
去向月度汇总!D2
写入月度汇总
跟着高亮一步步看数据怎么流动
7
注意事项与坑
!日期列如果是文本(左对齐),SUMIFS 区间条件会失效,先转成真日期。
!跨年时月份要带上年份,别只写 1 月,否则 2025 年 1 月和 2026 年 1 月会混在一起。
!EOMONTH 返回的是日期序列号,单元格格式要设成日期才看得懂。
8