- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
在坛子里憋了很久了,上来喘口气!
真的在坛子里学到很多东西,十分感谢大家的多次出手相助,工作真正成为乐趣,就从这里开始。小弟实在无以为报,只得将自己白痴式的学习经验拿出来献丑了,希望能耐对刚来的新朋友有点用处!
今天介绍的是坛子里很火的一个公式,
{INDEX($A$1:$A$100,SMALL(IF(MATCH($A$1:$A$7,$A$1:$A$7,)=ROW($A$1:$A$7),ROW($A$1:$A$7)),ROW(1:1)))}
用处是查找并返回一列中的不重的值。其实有很多大虾都解释过,但我从来没有看懂,主要是自己没有耐心啦,今天终于在一定要用的情况下,被逼无奈自己搞清楚了。这就把自己的白痴式学习过程与大家分享一下:
问题(借用以前大虾的例子了)
:
完整的公式太长了,我们只有将其一点点分解,才能真正了解,一下将按照公式运行的步骤来解释:
第一步,目的:在A列中,从头到位找一遍,把每一个的值“A/B/C/D”,在A列中第一次出现的位置找到。
公式:MATCH($A$1:$A$7,$A$1:$A$7)
运行原里:A1的值,即“A”,在A1:A7的区域里跑一遍,并告诉我们他第一次见到一个与自己长得一模一样的“人”,所在的位置告诉我们,也就是行号“1”(这个A其实看到的就是他自己,但是接下来住在“A5”里A,第一次看到的就不是自己了,而是住在“A1”里的那个A了)。好像已经是最白痴的解释了,但还是把自己搞晕了,大家多读几遍吧。哈哈。
返回结果:(1,2,3,2,1,3,7)就这样A1:A7里的每个字母都跑一遍,就返回的是一堆位置,也就是一堆代表行号的数字。
度过思考:到这里,我们其实已经知道了所有的字母的位置,只是其中有些字母由于有重复,所以返回的行号也有重复,如果我们能想办法,把这些重复的行号去掉就好了,这就是我们下一步的目的
第二步,目的:在第一步的结果(1,2,3,2,1,3,7)之中,我们只要把不是第1次出现的数都去掉,剩下的就是我们要的了。观察一下,有一个规律,如果这个数是第一次出现,那么他一定是按照自然数的顺序排列的。比如,前面的画了横线的数字(1,2,3,2,1,3,7)他们的数值,就是他们所在位置的自然数。同理,不满足这个条件的自然就是重复的值了。所以只要将(1,2,3,2,1,3,7)与个自然数的数组进行比较,搞定了。即(1,2,3,2,1,3,7)与(1,2,3,4,5,6,7)进行比较。
公式:利用row(A1:A7),创造出一个自然数数组(1,2,3,4,5,6,7)
利用if((1,2,3,2,1,3,7)=(1,2,3,4,5,6,7),(1,2,3,4,5,6,7))这时两个数组中的数按照各自的位置对应比较,具体比较如下
而if((1,2,3,2,1,3,7)=(1,2,3,4,5,6,7),(1,2,3,4,5,6,7))转换为公式就是
IF(MATCH($A$1:$A$7,$A$1:$A$7,)=ROW($A$1:$A$7),ROW($A$1:$A$7))
结果:(1,2,3,7)
过渡思考:这时我们已完成了一大半了,我们已经知道有多少个不重复值,同时他们的所在的行号也知道了,我们只要依次将这个位置的“字母”请出来就好了,也就是引用A列里,位于这些行上的值。而这时又有一个问题,目前得到的结果是一个数组,我们不能一次同时引用4个值,要一个一个来引用,那么就从按照从小到大的顺序来引用吧
第三步:目的:一个一个来引用这些值,还要在B列中按顺序排列出来
公式:在B1里 去第1个数“1”,我们要写 SMALL((1,2,3,7),1)
在B2里 去第2个数2,我们要写 SMALL((1,2,3,7),2)
在B3里 去第3个数3,我们要写 SMALL((1,2,3,7),3)
在B4里 去第4个数7,我们要写 SMALL((1,2,3,7),4)
发现规律了吧,正好我们要去的第N个数,就是我们当前所在格的行数,这样我们只要将SMALL((1,2,3,7),N)中的N,用一个会跟上当前单元格变动而自己变动的公式就可以了,这就是ROW()的用处
所以完整公式为:
SMALL((1,2,3,7),N)
=SMALL((1,2,3,7),ROW())
=SMALL(IF(MATCH($A$1:$A$7,$A$1:$A$7,)=ROW($A$1:$A$7),ROW($A$1:$A$7)),ROW())
过渡思考:现在还不好办吗,列是固定的A列,行号也有了,就引用吧,这里省点口水了
第四步:目的:引用
原创力文档


文档评论(0)