ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > 函数与公式 > CountIf函数替代Match函数的优越性

CountIf函数替代Match函数的优越性

作者:绿色风 分类: 时间:2022-08-18 浏览:109
楼主
xyh9999
我们知道用MATCH(lookup_value,lookup_array,match_type)可以返回lookup_value在lookup_array中的位置(或近似位置),我个人认为基本可以用CountIf函数来替代Match函数的绝大部分功能,并且很多地方可以超越Match函数。

我认为,当lookup_value是一个确定的值时,我鼓励大家用CountIf(lookup_array,">=" & lookup_value)或CountIf(lookup_array,">" & lookup_value)+1来代替MATCH(lookup_value,lookup_array,-1),我还鼓励大家用CountIf(lookup_array,"<=" & lookup_value)或CountIf(lookup_array,"<" & lookup_value)+1来代替MATCH(lookup_value,lookup_array,1)。

因为我们知道使用MATCH(lookup_value,lookup_array,match_type)函数时,当参数match_type为1或-1时,都要求lookup_array是按一定规则排过序的,而用CountIf去代替是没有这个要求的!

当使用MATCH(lookup_value,lookup_array,match_type)函数时,若match_type=0时,我还是建议用MATCH函数的,当然也可以用If(CountIf(lookup_array,"=" & lookup_value),CountIf(lookup_array,"<=" & lookup_value))或If(CountIf(lookup_array,"=" & lookup_value),CountIf(lookup_array,"<" & lookup_value)+1)来升序排序的位置,用If(CountIf(lookup_array,"=" & lookup_value),CountIf(lookup_array,">=" & lookup_value))或If(CountIf(lookup_array,"=" & lookup_value),CountIf(lookup_array,">" & lookup_value)+1)来降序排序的位置。好象用CountIf也显得要灵活些。
以上仅代表个人观点,错误难免,请指出。供大家参考、讨论。

顺便说一句,类似的工作表函数功能可相互替换且优于原函数的应不止这一组,请众多高手不啬出手!
2楼
gouweicao78
谢谢分享观点。
关于COUNTIF和MATCH函数:COUNTIF函数采用“遍历”算法,因此当数据量大时,效率就低。
MATCH函数的第3参数为1, 升序查找,采用与LOOKUP函数相似的“二分法”算法;
MATCH函数的第3参数为0,精确匹配碴场,采用“从头开始逐个查找,找到即停”的算法;
MATCH函数的第3参数为-1,降序查找,应该类似于升序查找。

因此,MATCH函数算是一个高效率的函数。

但不管如何:只有用合适的函数做合适的事情,才是“实用为王”。再高效,如果不能实现功能或者需要费很大周折才能实现的,那也白搭,呵呵。
3楼
liuguansky
COUNTIF对文本型数字的处理也是一个不容忽视的问题。
4楼
weikang2516
各位高手真是老生常谈啊,学习学习
5楼
poiuyman5
fantastics
6楼
poiuyman5
fantastics

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap