Question to say "I can!"

excel 去掉重复数据的方法

2013-12-19

假设原始数据在A列的A2:A10

B2数组公式:
•=INDEX(A:A,MIN(IF(COUNTIF(B$1:B1,A$2:A$10),4^8,ROW($2:$10))))&""

注意是数组公式, 输入方法为: 先在B2输入一个=号, 再粘贴=号后面的部分, 然后同时按
Ctrl+Shift+回车键 (俗称: "三键" , 结束)
下拉

注: 原始数据至少从第二行开始, 这是前提条件

公式虽然简单, 但解释起来却不容易,就从里向外说吧:

•COUNTIF(B$1:B1,A$2:A$10)
这个函数是依次判断A2,A3,…,A10在B列(公式所在单元格上方区域)出现的数次, 如果返回值为0, 说明没在B列没出现过, 相当于FLASE, 否则为TRUE(出现过)

•IF(COUNTIF(B$1:B1,A$2:A$10),4^8,ROW($2:$10))
IF语句判断如果COUNTIF()返回值不为0, 即当前公式所在单元格在A列已经出现过, 则返回值为4^8(即65536, 相当于一个极大的数或不可能有数据的单元格), 否则, 返回在A列没出现过的数据的行号, 这个行号由ROW($2:$10)生成的数组决定

•MIN(IF(COUNTIF(B$1:B1,A$2:A$10),4^8,ROW($2:$10)))
MIN这个函数负责将此公式单元格上方没有在A列出现过的, 而且又是IF得到的行号的最小的序数提供给INDEX, 这也是INDEX函数第二个参数的最后一个环节.

•&""
这个段代码可有可无, 目的的在INDEX()返回为0的时候, 将其转换为空值, 也就是不显示零值.

这样说有点抽象, 如果公式的哪段不明白, 可以在公式栏用鼠标涂黑, 然后按F9观察这段公式的计算结果, 慢慢想通了, 一点一点地, 整个公式也就明白了.



作者:admin | Categories:设计问题 | Tags:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*

无觅相关文章插件,快速提升流量