答疑解惑SOS:求助Excel中带分隔符的文本计数去重计算!
求助各位大神,真是急死了,因为文本有分隔符,实在不想拆开,想去重计数求数值,哪位大神给看看,带条件的、带分隔符的、含重复的文本统计个数。
小编想说,这种问题其实没有一点难度,贵在思路。
如下图所示:
A列为省份信息,B列是各个省份对应的员工姓名,我们发现每个单元格可能含多个姓名,且不同姓名之间由分隔符“/”进行间隔。并且同一个省份下的员工姓名可能出现重复值。
我们最终想要做的就是统计各省份下不同员工的人数。
下面分简单的几步,对公式拆解剖析。
第一步:去重(获取唯一条件)
使用UNIQUE去重函数:
=UNIQUE(A2:A9)
对A2:A9省份列数据可能含重复值的省份名称去重,得到唯一值列表。
第二步:条件筛选
使用FILTER条件筛选函数:
=FILTER(B$2:B$9,A$2:A$9=D3)
将D列与A列相同省份下的所有对应员工筛选出来。
第三步:合并
使用TEXTJOIN函数:
=TEXTJOIN("/",,FILTER(B$2:B$9,A$2:A$9=D3))
并下拉填充公式。
将D3省份“河北”返回的一列多行的数组溢出员工信息,用分隔符“/”合并到一个单元格显示。
第四步:拆分
使用TEXTSPLIT拆分函数:
=TEXTSPLIT(TEXTJOIN("/",,FILTER(B$2:B$9,A$2:A$9=D3)),"/")
将上一步以分隔符“/”合并在一个单元格的姓名数据,再用列分隔符“/”拆分到一行多列不同单元格中(分列)。
第五步:姓名去重
再次使用UNIQUE去重函数:
=UNIQUE(TEXTSPLIT(TEXTJOIN("/",,FILTER(B$2:B$9,A$2:A$9=D3)),"/"),TRUE)
将上一步返回的一行多列的员工姓名数组溢出结果,进行去重处理,留下数组内姓名的唯一值列表。
第六步:计数
使用COUNTA计数函数:
=COUNTA(UNIQUE(TEXTSPLIT(TEXTJOIN("/",,FILTER(B$2:B$9,A$2:A$9=D3)),"/"),TRUE))
将上一步返回的各省份去重后的员工姓名数组溢出结果,进行非空单元格个数的计数,最终得到的就是各省份下不同员工的人数。