Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2409|回复: 7

[函数] 分享关于山菊花版主的=SUM(1/COUNTIF(区域,区域))的解析

[复制链接]
发表于 2013-5-3 18:46 | 显示全部楼层 |阅读模式
本帖最后由 huangcaiguang 于 2013-5-6 14:00 编辑

= SUM(1/COUNTIF(区域,区域))

公式是计算区域中不重值的个数的经典公式。
准备
区域A1:A10的数据分别是:公式、计算、可以、公式、公式、复制、这个、重复、可以、不可以
B1写入公式:
=SUM(1/COUNTIF(A1:A10,A1:A10))
它是一个数组公式,同时按shift+Ctrl+Enter 三键结束。
观察
1、在编辑栏,像下面一样选取函数Countif()部分,然后按F9:
=SUM(1/COUNTIF(A1:A10,A1:A10))
你看到的结果会是:
=SUM(1/{3;1;2;3;3;1;1;1;2;1})
如果这时你按下Esc键,公式会还原为原来的状态。
2、在结果的基础上继续选取,=SUM({1/{3;1;2;3;3;1;1;1;2;1})或者在原公式上选取=SUM(1/COUNTIF(A1:A10,A1:A10)),按F9,结果为:
=SUM({0.333333333333333;1;0.5;0.333333333333333;0.333333333333333;1;1;1;0.5;1})
3、选取全部公式按下F9或者直接按三键,你看到的都是同一结果:7。
分析
1、Countif(A1:A10,A1:A10)是数组计算,运算过程相当于:
Countif(A1:A10,A1)
Countif(A1:A10,A2)
……
Countif(A1:A10,A10)
结果如上面所示,是一个数组,表示区域中等于本单元格数据的个数。
2、用1除以个数,是个非常妙的想法,要结合前后计算才能领会好它的作用。把上一步的结果整理一下,用分数代替小数:
=SUM({1/3;1/3;1/3;1/2;1/2;1;1;1;1;1})
区域中有三个重复的数“公式”,那么这一步就有三个1/3,有两个“可以”,那么这一步的结果就有两个1/2,如果有5个重复的数,那么这一步的结果就有5个1/5,如此类推。
3、这一步几乎不用说了。Sum()进行的是加法运算,3个1/3相加,结果为1,2个1/2相加,结果也是1。如果区域中有8个重复的数,那么一定会有8个1/8相加,结果也是1。
重复的数经过三步运算,到最后结果都是1。
把所有结果加起来,就是区域中不重复的个数。

顺便贴个精华帖:VBA收藏贴http://club.excelhome.net/thread-721260-1-1.html
发表于 2013-5-3 19:24 | 显示全部楼层
回复

使用道具 举报

发表于 2013-5-3 20:56 | 显示全部楼层
是个好方法                           
回复

使用道具 举报

 楼主| 发表于 2013-5-3 21:24 | 显示全部楼层
veryloveep 发表于 2013-5-3 20:56
是个好方法

这种讲解适合我们这种自学的、零起点理解快!{:912:}
回复

使用道具 举报

发表于 2013-5-5 21:47 | 显示全部楼层
好贴,支持。         
回复

使用道具 举报

发表于 2013-8-2 22:07 | 显示全部楼层
分析得细致到位!易于新手学习上手!楼主辛苦了!
回复

使用道具 举报

发表于 2013-8-2 22:08 | 显示全部楼层
希望论坛中多发一些这样的详细分析讲解的帖子!期待!
回复

使用道具 举报

发表于 2014-9-3 21:38 | 显示全部楼层
辛苦了  学习了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-7 21:40 , Processed in 0.260733 second(s), 6 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表