ARTICLE · 1055202
别再写嵌套函数了,Excel数据透视表里藏着一个“去重计数”
做考勤或者其他统计,很多人都碰到过同一个麻烦:
一个人一天可能打好几次卡、下好几个单,出几趟车。
如果要算每个人究竟出勤了几天,或者有几天出车,直接建数据透视表,计数出来的全是总流水笔数。
如果想用goupby等函数,由于涉及到去重,这公式写起来又比较复杂冗长难懂。
以前很多人为了把同一天的多笔记录合并成1天,要么在旁边插辅助列写 COUNTIF,要么写一长串数组公式,把电脑算得卡成幻灯片。
假设有一个简易的司机出车登记表,想要统计每个司机出车天数。

先看一下传统的数据透视表效果
插入数据透视表,将“姓名”字段拖到“行区域”,将“出车日期”拖到“值”区域。

“值”区域中的“出车日期”默认计算类型是“计数”,打开“值字段设置”对话框,在下面的计算类型中也找不到去重计数选项,因此只能是将每个司机所有的“出车日期”进行次数求和,无法去重求和。

这个显然是达不到我们想要的效果。因为一个司机一天内多次出车,也只算一天。
使用新的数据透视表效果
其实Excel原生就能直接做去重计数,只是这个开关被藏起来了。
关键就一步:勾上那个多出来的框
选中源数据,然后点击“插入”选项卡,点击下方的“数据透视表”。这一步和传统的数据透视表完全一样

以后别急着点确定。看弹窗最底部那一行字:“将此数据添加到数据模型”。把它勾上,再点确定。

接下来按老规矩排版:把“姓名”拖到行。把“出车日期”拖到值。这一步和传统数据透视表也一样

这时“出车日期”默认还是普通计数。鼠标左键点一下“值”区域里的“计数项:出车日期”,选“值字段设置”。

在“值字段设置”对话框中,找到“计算类型”列表框,往下拉到列表最底下,你会发现和平时只有11个汇总选项的地方不一样,有“非重复计数”选项。

选它,点确定。每个司机实际有出车的天数,就全都出来了。无论一天出多少次车,都会算一天,而不会重复计数。

为什么平时找不到这个选项?
很多朋友好奇,为什么平时不勾那个选项就死活找不到“非重复计数”? 因为你勾了那个框,Excel调用的根本不是平时的那套传统计算引擎。 平时大家用的透视表,是上世纪90年代就定下来的老机制。它是一个接一个按行往下读数据,算加总、算平均值很快,但它转头就忘,根本记不住某个日期之前有没有出现过,所以官方干脆没给它做去重功能。
勾上“添加到数据模型”之后,Excel实际切换成了微软做Power BI的那套列式引擎。 这套引擎把数据存进去的第一秒,底层就给每一列偷偷建好了“唯一值字典”。谁在哪一天有记录,它早就把重复项归拢好了,调取的时候做的是集合运算,自然能秒出非重复统计。
以后遇到类似“统计每个客户买了多少种商品”、“每个销售跑了多少个城市”,别去硬扣公式了,建透视表时把底下那个框勾上就行。
声明:封面图片为ai生成。