公众号平台最新的推送规则对技术类文章不太友善,如果不想错过干货,请务必 “设为星标”哦!!!
点击上方蓝字 --> 点击“...”--> 选择“设为星标”
来自网友的求助:一对多的数据表,统计一对一唯一项的数量。
案例:
下图 1 是销售人员的各项产品销量表,有的销售可能在不同时期多次售出同样产品,比如下图 2 这样,于予菊就两次售出过主机。
请统计出每位销售出售的唯一产品类目数,效果如下图 3 所示。
解决方案:
1. 在 F2 单元格中输入以下公式 --> 下拉复制公式:
=SUMPRODUCT(($A$2:$A$29=E2)/COUNTIFS($A$2:$A$29,$A$2:$A$29,$B$2:$B$29,$B$2:$B$29))
别被公式的长度吓坏,分解开来并不复杂。
公式释义:
COUNTIFS($A$2:$A$29,$A$2:$A$29,$B$2:$B$29,$B$2:$B$29):
countifs 是多条件计数函数,语法为 COUNTIFS(区域1, 条件1, [区域2, 条件2],…);
此处的公式旨在统计出区域内 A 和 B 列同时重复的次数,会生成一个由重复次数组成的数组;
$A$2:$A$29=E2:将 A 列的每个单元格与 E2 单元格的姓名比对,得到一组由 1 或 0 组成的数组;
($A$2:$A$29=E2)/COUNTIFS(...):
将上述两个结果相除,分子中为 0 的,即姓名不匹配的,自然不会统计在内;
如果姓名匹配,则看分母中的重复次数,例如,如果重复过 3 次,则相除后的数组中会出现 3 个 1/3;
SUMPRODUCT(...):最后用该函数将上述结果相加,重复多次的加起来结果也是 1,从而得到案例所需结果。
用 sumproduct 函数的好处是不必使用数组公式。
2. 给标题加上筛选功能,分别筛选一下“于予菊”和“诸葛钢铁”的名字,这样就能很清楚地核对结果,去除重复项,他们二位的产品类目数完全正确。
接下来再给大家介绍一个公式。
3. 在 F2 单元格中输入以下公式 --> 按 Ctrl+Shift+Enter 结束:
=COUNT(0/(MATCH($B$2:$B$29,IF($A$2:$A$29=E2,$B$2:$B$29),)=ROW(A:A)))
公式释义:
IF($A$2:$A$29=E2,$B$2:$B$29):如果 A 列的姓名与 E2 单元格相同,则返回对应的 B 列值;
MATCH($B$2:$B$29,...,):计算上述值在区域 $B$2:$B$29 的位置序号,遇到重复值也只返回第一次出现的位置序号,也就是变相起到了去重作用;
ROW(A:A):生成自 1 开始的递增自然数;
MATCH(...)=ROW(A:A):将位置序号与自然递增数相比,如果相同则返回 true;
count(0/...):只有当分母不为 0 时,即 true 时,被 0 除才有意义,计算出这些有意义的结果数量就是想要的答案
4. 下拉复制公式:
领取专属 10元无门槛券
私享最新 技术干货