excel里SUMPRODUCT和countif来统计不重复的字符串个数

来源:百度知道 编辑:UC知道 时间:2024/07/07 20:23:15
A B
1 a 3
2 b
3 a
4 c

我在B3 写入如下公式:=SUMPRODUCT(1/(COUNTIF(A1:A5,A1:A5)))
就可以得到不重复的字符串个数,但是不理解啊。
看了帮助文档,countif好像返回的是单个值把 ?但是sumproduct好像是接受数组来计算的?是怎么进行单个值到数组的转换的?
而且文档的example上也没写 countif的第二个参数可以接受区间啊,不知道是不是因为第二个参数是一个区间所以返回的就变成了数组?这种情况下countif是如何计算的?

还请高手解释下
好像明白了,就是说这个1/COUNTIF(A1:A5,A1:A5) 这个相当于返回了一个一维数组是把。所以sumproduct只是简单的相加这个数组的值。

还有,smallcolour ,你说的用sum要怎么实现?什么是三键确认?我改用sum出来是一个小数~

这是数据组公式.分步来做
1/COUNTIF(A1:A5,A1:A5),分成五步
1/COUNTIF(A1:A5,A1),1/COUNTIF(A1:A5,A2).....1/COUNTIF(A1:A5,A5)
然后再将这五个结果用SUMPRODUCT加在一起.其实用SUM也可以,但要用三键来确认数组公式,所以用了SUMPRODUCT,这样省去了按三键确认的麻烦

用1除的目的是个关键.当你的数据出现了N次,那就会将其中的一次,转为N次分之一,然后相加正好为1.目的就是将多次出现的重复数据转为1.

*************
用SUM的话,不是以ENTER确认公式,而是以同时按下CTRL+SHIFT+ENTER来确认

这样给你解释,你看行吗:
以查找字母 a ,为例
查找第一个 a 时,查出的个数为2 ,需参与计算的值则为1/2,查到第二个a时,需计算的值又为1/2

这时,2个a的结果为1,多个重复字符都是如此,最终结果都是1,不重复的1/1 ,结果也为1

这样通过sumproduct求总数,得出的结果当然是不重复字符的个数了

补充回答:
公式=SUMPRODUCT(1/(COUNTIF(A1:A5,A1:A5)))
改成:
=sumproduct(1/(COUNTIF(A1:A5,A1:A5)))
输入结束后不能直接按回车,而要按
ctrl + shift + Enter
以完成数组公式的输入