分享

对比银行卡号,一个公式搞定

 hercules028 2019-05-08

在工作中,总会遇到一些古怪的问题,比如下面的银行卡号,需要从中找出重复的:

有人会说:这一眼看过去不就可以了嘛。这样当然可以,但是当有无数条这样的卡号那该怎么办呢?

这时你可能会想到了条件格式中的突出显示重复值,想法不错,可结果呢?

真的令人尴尬,这两个随机生成的银行卡号明明后四位不一样,也就是说银行卡号不一样,但是Excel表格却显示这两个卡号一样,难道是Excel“瞎”了吗?

其实事实并不是Excel的错误,也并不能怪Excel,因为要做出正确的判断这已经超出了Excel条件格式的能力范围。那么这是为什么,我们最终的处理的目的是要达到不仅要找到重复的银行卡号而且还要它显示出哪一行与哪一行重复,那又该如何做呢?

首先分析原因,这是因为Excel的数字处理精度只有15位,而银行卡号一般要19位,虽然将银行卡号的格式设置为文本格式,但是Excel依然按照数字格式来处理,并且处理精度依然是15位。

其次理清目标,就是不仅要找出重复的卡号,而且还要显示出第几行与第几行重复。

最后说说如何解决问题。

遇到这样的问题首先想到的是函数,那么具体应用什么函数呢?实际上只用四个函数:

第一个IF函数是判断函数。

第二个ROW函数是显示行号。

第三个MATCH函数是显示要找的数据在某一列或某一行数据中的所处的位置。

第四个CONCATENATE函数是将多个单元格的数据合并到一起。

利用这四个函数的嵌套,在B2单元格输入公式:

=IF(ROW(A2)-1=MATCH(A2,$A$2:$A$174,0),CONCATENATE('第',ROW(A2)-1,'行'),CONCATENATE('第',ROW(A2)-1,'行与',MATCH(A2,$A$2:$A$174,0),'行重复'))

红色的公式为算出A2单元格所处的行号为第二行,那么ROW(A2)-1就是2-1=1。

绿色的公式为算出A2单元格中的银行卡号在A2到A174这个范围中第一次出现的位置。

IF函数的第一参数对下面这个等式进行判断:

ROW(A2)-1=MATCH(A2,$A$2:$A$174,0)

如果等式成立,就计算这一部分的公式:

CONCATENATE('第',ROW(A2)-1,'行')

公式结果显示为第n行。

如果IF函数对等式判断后,两个条件不成立,就计算这一部分的公式:

CONCATENATE('第',ROW(A2)-1,'行与',MATCH(A2,$A$2:$A$174,0),'行重复')

公式结果显示为第几行与第几行重复。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多