夜雨聆风学习资料网

ARTICLE · 1273822

你做的 Excel 报表,其实是一次性的

你做的 Excel 报表,其实是一次性的
摘要:
周五下午 5 点,老板让我按销售员拆分华东区的数。我打开存了 8 版的报表,知道又要重做一遍。
正文:
周五下午 5 点 20,老板在群里 @ 我:「华东区 9 月的数,按销售员拆一下,6 点前给我。」我打开那个已经存到第 8 版的报表,光标停在 SUMIFS 的第三个参数上,停了三秒。我知道,接下来 40 分钟,我要把上个月做过的事,再做一遍。
真正让我破防的,是隔壁工位的老陈同一份数据。他把表头「区域」那个格子从「华南」改成「华东」,回车。整张表刷地一下全变了——不是那种要按 F9 才肯动的变,是每一行、每一个合计,自己就到位了。然后他点了一下「含税金额」那个数。屏幕跳出一张明细表:只有华东区的订单,一行不少,一行不多,底下还自动带了合计。
我问他装的什么。他说:「报表不是做出来的,是长出来的。」这句我当时没听懂。后来才明白,我和他差的不是函数水平。先做个自检,三个问题拿你手上任何一张表,问自己:
  1. 源数据多了一行,这张表会自己变吗?
  2. 换个筛选条件,你要不要重做一遍?
  3. 老板指着某个数问「这钱花在哪了」,你能 10 秒内答上来吗?
三个都答「不能」,那你做的不是报表,是一次性打印件。
打印件的问题很朴素:下个月,你得重新打印一次。

第一件事:让参数从一个格子里长出来

大部分人是这么干的:打开筛选,勾「华东」,看完,关掉,勾「华南」。
问题不在慢。问题在于——筛选是给自己看的,别人打开你的表,永远不知道你筛了什么。
正确做法是留一块参数区,就放在表头上方:
改一个格,全表跟着变。这不是炫技,这是把「下个月」变成一个动作。

第二件事:源数据、模板、输出,分三张表

这条比函数重要一百倍。把明细和汇总放在同一张表里,是所有返工的根源。
源数据页:只增不改,一行一条记录,不加小计行,不合并单元格,不留空行。——这两条是硬规矩,破一条,后面全乱。
模板页:只放公式、占位符、参数区。
输出页:只放结果,谁都不许在上面手改。
分开之后你会发现,「下个月」这个动作,就是往源数据页粘一次新数据。剩下的,它自己跑。

第三件事:让汇总数字"点得开"

这是老陈最让我服的一下。
纯 Excel 其实能走到 80%。用 FILTER:
=FILTER(销售订单!A2:R75,    (销售订单!E2:E75=$B$2)*    (销售订单!P2:P75=$D$2),"无记录")
筛选、组合条件,都好使。
但卡在最后 20%:
你点了 90042.24 这个数,Excel 并不知道它对应的是「华东 + 已完成 + 9 月」。
它只知道「有个格子被点了」。
要让它知道,你得写 VBA(同事电脑还报毒),或者给每个汇总格手配一个超链接(20 个格子 20 个链接,下个月数据一变全错位)。
这就是为什么绝大多数人的报表,止步于「能看」,到不了「能查」。

那最后 20%,我是怎么解决的

VBA、Power Query、手配超链接,我三条路都试过。都不算错,但都不是给「每周要出一版表」的人用的。
后来我干脆自己写了个功能,专注于报表设计。它只干三件事,正好对应上面三件事——
一、单元格绑定模板。模板页的 A6 不用写公式,写这个:
点一下生成,按数据行数自己往下铺。这个月 7 个区域,下个月 9 个,不用你拖。
二、参数筛选。
参数区挂在模板上,改哪个格,输出表整体重算。跟第一件事一个道理,只是不用你手写 SUMIFS。
三、明细钻取。
给汇总格挂一个「查看明细」动作。点金额,直接跳明细表,只带这个数背后的原始行,还自动带合计。
它只解决一件事:让报表可以被「再生成」,而不是被「重做」。
我给它的定位很土:一个替你在周五晚上加班的助手。

后来那个周五

我 5 点 47 分发出去,老板回了两个字:「挺快。」
他不知道,我那个下午在改这篇文章,不是在改报表。

相关学习资料