这篇要你亲手做出一张表:客户在左、月份在上,每个格子里是这个客户这个月的金额合计。用一份 8 行的明细就够,换成你手上几千行的真表,做法一个字不用改。
做完你还会看到另一件事:同一份明细,换个摆法就是另一张报表,而明细一个单元格都没动过。
准备两样:一份规范明细——标题只占一行,一行一条记录,日期是真日期,没有合并单元格和小计行(这几点为什么不能将就,前面那篇讲过);Excel 2016 或更新版本,下面用 Windows 版界面,Mac 版菜单名略有差别,四个框的位置一样。
先看一眼这份明细
放在工作表 明细 的 A1:E9:
| 订单号 | 日期 | 客户 | 区域 | 金额 |
|---|---|---|---|---|
| A001 | 2024/3/2 | 甲公司 | 华东 | 1200 |
| A002 | 2024/3/15 | 乙公司 | 华北 | 800 |
| A003 | 2024/3/20 | 甲公司 | 华东 | 1500 |
| A004 | 2024/4/1 | 丙公司 | 华东 | 900 |
| A005 | 2024/4/8 | 乙公司 | 华南 | 600 |
| A006 | 2024/3/28 | 甲公司 | 华东 | 700 |
| A007 | 2024/4/15 | 乙公司 | 华北 | 1100 |
| A008 | 2024/3/30 | 丙公司 | 华南 | 400 |
八行金额加起来是 7200。记住这个数,每一步都用它验算。
插入一张空透视表
点明细里任意一个有数据的单元格,然后“插入”→“数据透视表”。确认“表/区域”是 明细!$A$1:$E$9,位置选“新工作表”,确定。
左边出现一块空白的方框区域,右边出现“数据透视表字段”窗格:上半部分是字段清单(每个前面一个勾选框),下半部分是四个空方框——筛选、列、行、值(新版里第一个叫“筛选器”)。
四个框都是空的,所以左边那张表除了一行“行标签”的空壳,什么都没有。
四个框分别管什么
- 行:把字段竖着分类,每个值占一行。
- 列:把字段横着分类,每个值占一列。
- 值:格子里算出来的那个数。
- 筛选:整张表的总开关,选一项,其余记录不参与。
它们合起来决定一个格子:
一行明细要落进某个格子,得同时符合行上的条件(是这个客户)和列上的条件(是这个月)。四个框里只有“值”不负责分类。
第一步:客户拖进“行”
勾上“客户”。它是文字字段,Excel 默认把它放进 行 区域——非数值字段默认进行、日期字段默认进列、数值字段默认进值,这是 Excel 按字段类型做的一次猜测 1。
左边出现甲公司、乙公司、丙公司三行,底下有“总计”,但还没有数字。顺手把“行标签”改成“客户”。
第二步:金额拖进“值”
勾上“金额”。它是数值字段,默认落进“值”,计算方式默认是 求和;非数值字段放进来时默认是 计数 2。
表头显示成“求和项:金额”,点一下可以改成“金额”,不影响计算。右下角总计应该是 7200,对不上就说明源区域选漏了行,或者金额列里混着文本——那种情况下你会看到“计数项:金额”,用 ISNUMBER 抽查一格就能确认。
第三步:日期拖进“列”
这一格最容易卡。勾上“日期”后,它默认进列,但从 Excel 2016 起,日期字段一进透视表就会被自动包成“年—季度—月—日期”的层级 3,上方出现多层表头,格子被拆碎。
你只要“月”:在列区域里把“年”和“季度”拖出去(或选中后按 Delete),只留“月”。处理完应该看到 3月、4月 两列。
如果显示的是“3月2日”“3月15日”这样逐日的日期,说明自动分组关掉了。右键任一日期的单元格 →“组合”,选“月”,确定。
上面是按具体日期一行一行排,下面被归成了季度和月份,也就是你要的样子。
现在和明细对一遍:
| 3月 | 4月 | |
|---|---|---|
| 甲公司 | 3400 | (空) |
| 乙公司 | 800 | 1700 |
| 丙公司 | 400 | 900 |
| 总计 | 4600 | 2600 |
甲公司 3 月那 3400 是 1200+1500+700,乙公司 4 月那 1700 是 600+1100,四格都对得上,说明行、列、值放对了。
注意甲公司 4 月那格是 空的,不是 0——这个差别后面还要用。
第四步:区域拖进“筛选”
把“区域”拖到筛选框。表格上方多出一个下拉框,现在显示“(全部)”。改成“华北”,整张表只剩乙公司一行:3 月 800、4 月 1100,总计 1900。看完切回“(全部)”。
这就是筛选和行的区别:行是“摊开来给我看”,筛选是“不算进来”。
换个摆法,就是另一张报表
现在做这篇真正想让你看见的事:把行和列上的字段互换,什么都不用重写。
把“客户”从行拖到列,把“日期”从列拖到行:
| 甲公司 | 乙公司 | 丙公司 | |
|---|---|---|---|
| 3月 | 3400 | 800 | 400 |
| 4月 | (空) | 1700 | 900 |
数字一个没变,只是站的角度换了。
再试两个:把“客户”拖出窗格,只留日期在行,得到一张按月的金额走势;把“金额”拖出去、把“订单号”拖进值,得到一张单数表——甲公司 3 月 3 单、乙公司 4 月 2 单,总计 8 单,和上一篇用 COUNTIFS 数出来的是同一件事(SUMIFS 与 COUNTIFS)。
为什么能这么随便?因为 透视表里没有“每格一条公式”这种东西。它只记住两件事:哪个字段放在哪个框、值区域用哪种汇总。你换了字段,它就按新摆法把整份明细重新算一遍;源数据一个字节都没改,它只是数据的一个视图。
这正是它和 SUMIFS 那张汇总表的根本差别:用 SUMIFS,每个格子要单独写一条公式、自己搭行头列头、锁好 $、换月份还得复制公式;透视表只要求你说清“按什么分行、按什么分列、格子里算什么”。但也因此,SUMIFS 对不存在的组合返回 0,透视表给的是空格——甲公司 4 月根本没下单,那格组合就不存在。
做完要确认的三件事
一、每种摆法下总计都该是 7200。 这个数不随摆法变化。变了就检查筛选是不是没切回“(全部)”。
二、空格要能解释。 双击那个格子(或双击总计里的某个数),Excel 会新建一张表,把这个数字背后的所有明细行列出来——这是核对透视表最快的手段。空格的情况,列出的行数就是零。
三、明细加了行,透视表不会自己变大。 它读的是创建时那块区域 A1:E9,用的是当时的一份快照 1。你在第 10 行加一条记录,右键“刷新”数字也不变,因为那一行不在区域内。要么“数据透视表分析”→“更改数据源”扩大区域,要么一开始就 Ctrl+T 把明细建成表格,表格新增的行刷新后会自动纳入。
这张表下个月可以直接接着用。它还没做的两件事——格子里显示“占总额多少”,以及把求和换成平均值——都在“值字段设置”里,下一篇接着讲。