票选华山论剑


点击上方
蓝色
文字 关注我们吧!
送人玫瑰,手有余香,请将文章分享给更多朋友
动手操作是熟练掌握EXCEL的最快捷途径!

在上一篇中向朋友们介绍了一次统计多个关键字的技巧,尤其是在财务应用上非常方便。今天就这个话题我们再做一次延伸,帮助大家更好地理解关于“数组”的概念。
如下表,众大侠们在票选“天下第一”。可是,他们这些人只懂得打打杀杀,那里玩儿得了写写画画这种事情!于是,表格就做成了下面这个样子。
怎样才能快速统计每个人的得票呢?

在单元格F2中输入“=COUNT(FIND(E2,$C$2:$C$13))”,三键回车并向下拖曳即可。

思路:
利用FIND函数在单元格区域C2:C13中查找单元格E2中的值“乔峰”
利用COUNT函数统计查找到的个数
由于COUNT函数可以忽略错误值,可以正常返回结果
在单元格F2中输入“=COUNTIF($C$2:$C$13,"*"&E2&"*")”并向下拖曳即可。

思路:
这里"*"&E2&"*"是亮点,构造了模糊查询
COUNTIF函数的用法请参看帖子总结篇--COUNTIF函数实用终极帖。
在单元格F2中输入“=SUM(N(SUBSTITUTE($C$2:$C$13,E2,)<>$C$2:$C$13))”,三键回车并向下拖曳即可。

思路:
利用SUBSTITUTE函数在单元格区域C2:C13中用“”将单元格E2中的值“乔峰”替换
将替换后的结果和单元格区域C2:C13对比,并返回一组逻辑数组
利用N函数将逻辑转换为数字
利用SUM函数求和
SUBSTITUTE函数的用法请参看帖子Substitute函数使用简介。N函数的用法请参看帖子N函数的【5种应用汇总】。
在单元格F2中输入“=SUM(IFERROR(FIND(E2,$C$2:$C$13)^0,))”,三键回车并向下拖曳即可。

思路:
利用FIND函数查找
FIND(E2,$C$2:$C$13)^0部分是亮点,在于将所有数字都转换为1,便于统计
IFERROR屏蔽错误
SUM求和
在单元格F2中输入“=(LEN(PHONETIC($C$2:$C$13))-LEN(SUBSTITUTE(PHONETIC($C$2:$C$13),E2,"")))/LEN(E2)”,三键回车并向下拖曳即可。

思路:
利用PHONETIC函数将单元格区域$C$2:$C$13的数据合并为一个字符串
利用SUBSTITUTE函数将上述字符串中的单元格E2中的数值用“”替代
利用LEN函数分别求出替换前和替换后字符串的长度
两者相减得到被替换的字符串的总长度
除以对应单元格中字符串的长度,求出对应单元格中字符串的个数
在单元格F2中输入“=COUNT(1/(LEN($C$2:$C$13)-LEN(SUBSTITUTE($C$2:$C$13,E2,""))))”,三键回车并向下拖曳即可。

思路:
这个技巧参考了COUNTIF函数统计不重复数字个数的经典用法
利用LEN函数和SUBSTITUTE函数分别求出替换前和替换后字符串的长度
相减后是被替换字符的长度,其结果是{0;0;0;0;2;0;0;2;0;2;0;2}
1/(LEN($C$2:$C$13)-LEN(SUBSTITUTE($C$2:$C$13,E2,"")))部分的结果是{#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;0.5;#DIV/0!;#DIV/0!;0.5;#DIV/0!;0.5;#DIV/0!;0.5},方便COUNT函数统计
COUNT函数忽略错误值,统计出结果
在单元格F2中输入“=SUM(IF(LEN($C$2:$C$13)<>LEN(SUBSTITUTE($C$2:$C$13,E2,"")),1,0))”,三键回车并向下拖曳即可。

思路:
这个技巧和上个技巧的思路类似。利用LEN函数和SUBSTITUTE函数来比较替代前和替代后的字符
利用IF函数判断并分别返回1和0
利用SUM函数求和,得出正确答案
在单元格F2中输入“=SUMPRODUCT(N(TRIM(MID(SUBSTITUTE(C$2:C$13,"、",REPT(" ",99)),{1,2,3}*99-98,99))=TRIM(E2)))”,三键回车并向下拖曳即可。

思路:
这个技巧利用的SUBSTITUTE函数提取字符的经典应用
利用TRIM函数去除多余的空格
和单元格E2比较并返回逻辑值
利用N函数将逻辑值转换为数值
利用SUMPRODUCT函数求和
SUBSTITUTE经典函数用法请参看帖子SUBSTITUTE函数提取字符经典应用一例。
-END-
长按下方二维码关注EXCEL应用之家
面对EXCEL操作问题时不再迷茫无助

戳原文,更有料!免费模板文档!
