ARTICLE · 1273805
你做的 Excel 报表,其实是一次性的
你做的 Excel 报表,其实是一次性的
摘要: 周五下午 5 点,老板让我按销售员拆分华东区的数。我打开存了 8 版的报表,知道又要重做一遍。 正文: 周五下午 5 点 20,老板在群里 @ 我:「华东区 9 月的数,按销售员拆一下,6 点前给我。」我打开那个已经存到第 8 版的报表,光标停在 SUMIFS 的第三个参数上,停了三秒。我知道,接下来 40 分钟,我要把上个月做过的事,再做一遍。 真正让我破防的,是隔壁工位的老陈同一份数据。他把表头「区域」那个格子从「华南」改成「华东」,回车。整张表刷地一下全变了——不是那种要按 F9 才肯动的变,是每一行、每一个合计,自己就到位了。然后他点了一下「含税金额」那个数。屏幕跳出一张明细表:只有华东区的订单,一行不少,一行不多,底下还自动带了合计。 
我问他装的什么。他说:「报表不是做出来的,是长出来的。」这句我当时没听懂。后来才明白,我和他差的不是函数水平。先做个自检,三个问题拿你手上任何一张表,问自己: 
三个都答「不能」,那你做的不是报表,是一次性打印件。 打印件的问题很朴素:下个月,你得重新打印一次。 大部分人是这么干的:打开筛选,勾「华东」,看完,关掉,勾「华南」。 问题不在慢。问题在于——筛选是给自己看的,别人打开你的表,永远不知道你筛了什么。 正确做法是留一块参数区,就放在表头上方: 
改一个格,全表跟着变。这不是炫技,这是把「下个月」变成一个动作。 这条比函数重要一百倍。把明细和汇总放在同一张表里,是所有返工的根源。 源数据页:只增不改,一行一条记录,不加小计行,不合并单元格,不留空行。——这两条是硬规矩,破一条,后面全乱。 模板页:只放公式、占位符、参数区。 输出页:只放结果,谁都不许在上面手改。 分开之后你会发现,「下个月」这个动作,就是往源数据页粘一次新数据。剩下的,它自己跑。 
这是老陈最让我服的一下。 纯 Excel 其实能走到 80%。用 FILTER: 筛选、组合条件,都好使。 但卡在最后 20%: 你点了 90042.24 这个数,Excel 并不知道它对应的是「华东 + 已完成 + 9 月」。 它只知道「有个格子被点了」。 要让它知道,你得写 VBA(同事电脑还报毒),或者给每个汇总格手配一个超链接(20 个格子 20 个链接,下个月数据一变全错位)。 这就是为什么绝大多数人的报表,止步于「能看」,到不了「能查」。 
VBA、Power Query、手配超链接,我三条路都试过。都不算错,但都不是给「每周要出一版表」的人用的。 后来我干脆自己写了个功能,专注于报表设计。它只干三件事,正好对应上面三件事—— 一、单元格绑定模板。模板页的 A6 不用写公式,写这个: 
点一下生成,按数据行数自己往下铺。这个月 7 个区域,下个月 9 个,不用你拖。 
二、参数筛选。 参数区挂在模板上,改哪个格,输出表整体重算。跟第一件事一个道理,只是不用你手写 SUMIFS。 三、明细钻取。 给汇总格挂一个「查看明细」动作。点金额,直接跳明细表,只带这个数背后的原始行,还自动带合计。 
它只解决一件事:让报表可以被「再生成」,而不是被「重做」。 我给它的定位很土:一个替你在周五晚上加班的助手。 我 5 点 47 分发出去,老板回了两个字:「挺快。」 他不知道,我那个下午在改这篇文章,不是在改报表。


源数据多了一行,这张表会自己变吗? 换个筛选条件,你要不要重做一遍? 老板指着某个数问「这钱花在哪了」,你能 10 秒内答上来吗?

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

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

第三件事:让汇总数字"点得开"
=FILTER(销售订单!A2:R75,(销售订单!E2:E75=$B$2)*(销售订单!P2:P75=$D$2),"无记录")

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


















































































