2026年6月13日

我在Excel里用了3年WEEKNUM,直到财务告诉我所有周报都算错了

一个函数名称的差异,让我在全员大会上无地自容。

那是去年Q3的季度总结会。财务总监把PPT翻到销售周报那一页,皱了皱眉,然后说了一句我到现在都记得的话:"这个季度的周报数据有问题,第27周和第28周的销售额对不上,差了整整一周。"

会议室里十几个人,目光齐刷刷地看向我。那份周报模板是我做的。

我当时脑子里一片空白。这个模板我已经用了三年了。从入职第一天起就在用。每个月、每个季度、每年年底,所有人都在用这张表填数据、做汇报。三年了,没人说过有问题。

怎么可能突然就差了一周?

WEEKNUM 和 ISOWEEKNUM,就差三个字母

回到工位上,我把那张表从头到尾查了一遍。数据源没问题,公式引用没问题,透视表也没问题。最后我盯着那个最不起眼的公式看了五分钟——=WEEKNUM(A2)

就是它。

我三年前写这个模板的时候,随便搜了一下"Excel 周数",看到 WEEKNUM 这个函数名,觉得挺直白的,就用上了。后面再也没想过这个事。

但问题在于:WEEKNUM 默认用的是美国体系。它把每周的第一天算作周日,而且第1周包含1月1日——不管1月1日是周几。

而中国的公司、欧洲的客户、ISO国际标准,用的都是周一为始的 ISO 8601 体系。对应的 Excel 函数叫 =ISOWEEKNUM(A2)

这两个函数差三个字母。就三个字母,让我三年的周报数据全偏了一周。

"WEEKNUM 和 ISOWEEKNUM 就差三个字母。就三个字母,让我三年的周报数据全偏了一周。"

为什么三年没人发现?

说实话,这个问题能藏三年,我后来想了一下,有几个原因。

第一,大部分人输入的本来就是估算值。销售填周报的时候,很少去精确核实"这周到底是第几周"。看到模板上写着 Week 27,就把这周的数据填进去。数据偏差一周,在周报的颗粒度下其实不太显眼。

第二,大家习惯了。一个模板用久了,没人会去质疑它。你觉得既然三年都没问题,那它应该没问题。

第三——也是最让我难受的一点——WEEKNUM本身的行为每年都在变。有些年份,美国体系和ISO体系的第1周刚好重合,一整年的数据都是对的。但有些年份(比如2026年),两个体系的差距刚好拉大到一整周,问题就暴露了。

也就是说,我的模板在某些年份是对的,在某些年份是错的。这种间歇性bug是最难发现的。

正确的做法很简单

如果你也在用Excel做周报,换一个函数就行:

=ISOWEEKNUM(A2)     // ISO 8601 标准,周一为始
=WEEKNUM(A2, 21)    // 也是ISO标准,参数21指定周一
=WEEKNUM(A2, 1)     // 美国体系,周日为始(默认)

你也可以不依赖Excel,直接用在线工具验证——比如 WeekNumber.cc,输入日期就能看到ISO、美国、简易三种体系的周数分别是多少,一目了然。

我现在的习惯是,每次做周报模板,先用在线工具抽查几个日期,确认周数跟ISOWEEKNUM对得上,再往下做。多花两分钟,省掉的是下一次全员大会上的尴尬。

我学到的教训

这件事教会我的不是"Excel函数要用对"——那个太浅了。真正的问题是:当你觉得一个东西"应该没问题"的时候,恰恰是最危险的时候。

我用了三年WEEKNUM,从来没怀疑过它。不是因为它对,而是因为它没出过让我看得见的错。

现在每次有人问我"这个模板准不准",我都会说:"我验证过,但如果你不放心,我们可以一起再过一遍。"我不再说"肯定没问题"——因为我说过三年,结果全错了。

不确定你的周报用的是哪种周数体系?

用我们的免费工具,输入任意日期,同时查看ISO、美国和简易算法三种周数。

立即验证周数 →
[ Google AdSense — 文章底部广告 ]