用excel数据透视表做多维度数据汇总,操作非常简单:先整理好规范数据并选中区域,插入数据透视表,再把“地区、产品、月份、人员”这类字段分别拖到行、列、筛选和值区域就行,不用写任何公式,很快就能得到多维度交叉汇总的结果。
源数据得先提前整理好:一行放一条完整记录,一列对应一个字段,第一行必须是明确的字段名。表格里如果有合并单元格、空白表头,或者把多个信息塞进同一列,都会导致透视表识别字段出错,后续结果全不对。
第一步:选中数据区域并插入数据透视表
随便点一下源数据里任意有内容的单元格,顶部菜单栏切到“插入”选项卡,选择“数据透视表”。弹出的窗口先确认自动识别的表/区域有没有覆盖全部数据,再选透视表的存放位置,可以放到新工作表,也可以直接插在当前现有工作表里。数据量大的时候建议放新工作表,界面更清爽,也不容易不小心挡住源数据。

要是弹窗里识别到的区域少了几行或者几列,先点取消,回到源数据补全标题行、确认数据是连续的再重新操作。透视表创建完成后也能修改源数据范围,但第一次就选准能省很多返工的功夫。
第二步:认识字段列表的四个放置区域
新建透视表后,右侧侧边栏会弹出“数据透视表字段”面板,上半部分是源数据里所有的字段名,下半部分就是筛选、列、行、值四个放置区域。行区域决定纵向的分类维度,列区域决定横向的分类维度,值区域负责做求和、计数或者平均值这类统计运算,筛选区域用来控制整张汇总表的统计范围。

做多维度汇总别上来就把所有字段都勾上,先想清楚你要统计的问题,比如要算“各地区各产品销售额是多少”,直接把地区拖去行区域,产品拖去列区域,销售额拖去值区域就好。
第三步:拖字段生成多维度汇总结果
把分类字段拖到行和列区域,把需要统计的数字字段拖到值区域,Excel就会自动生成交叉汇总表。比如把“科目”放到行,把“模考轮次”放到列,把“分数”放到值,立刻就能看到不同科目在各个轮次下的平均分或者总分。
本文档主要介绍如何通过python对office excel进行读写操作,使用了xlrd、xlwt和xlutils模块。另外还演示了如何通过Tcl tcom包对excel操作。感兴趣的朋友可以过来看看

值区域的默认汇总方式不一定是你想要的:金额、库存数量这类数据通常用求和;统计人数、订单数适合用计数;成绩、客单价这类指标常用平均值。点开值字段设置,确认好汇总方式之后再核对结果就不会出错。
第四步:添加筛选维度缩小统计范围
如果只想单独看某个地区、班级、月份或者门店的数据,把对应字段拖到筛选区域,之后点透视表上方的筛选下拉框选你要的范围就行。勾选下拉框里的“选择多项”,还能同时跨选多个地区或者多个月份一起统计。

筛选完最好核对一下末尾的总计行和总计列,确认数字符合业务逻辑,比如你只选了东区和南区,那总计数肯定就不再代表全部区域的总和。要是这个报表要发给别人,最好在表头或者旁边标注清楚当前的筛选条件,避免其他人看错数据。
第五步:源数据变化后刷新透视表
数据透视表不会跟着源数据的改动自动重算,你新增记录、修改金额或者补充了新月份的数据之后,随便点一下透视表里的任意单元格,找到顶部“数据透视表分析”选项卡里的“刷新”,就能看到更新后的汇总结果。

要是刷新之后还是看不到新增的数据,大多是之前选的原始数据范围没包含新行。点开“更改数据源”重新选一遍完整区域就好,更省事的方法是提前把源数据转成Excel的表格格式,再基于这个表格创建透视表,之后新增行刷新就能自动识别,稳定性高很多。










