在工作中,總會(huì)遇到一些古怪的問題,比如下面的銀行卡號,需要從中找出重復(fù)的: 有人會(huì)說:這一眼看過去不就可以了嘛。這樣當(dāng)然可以,但是當(dāng)有無數(shù)條這樣的卡號那該怎么辦呢? 這時(shí)你可能會(huì)想到了條件格式中的突出顯示重復(fù)值,想法不錯(cuò),可結(jié)果呢? 真的令人尷尬,這兩個(gè)隨機(jī)生成的銀行卡號明明后四位不一樣,也就是說銀行卡號不一樣,但是Excel表格卻顯示這兩個(gè)卡號一樣,難道是Excel“瞎”了嗎? 其實(shí)事實(shí)并不是Excel的錯(cuò)誤,也并不能怪Excel,因?yàn)橐龀稣_的判斷這已經(jīng)超出了Excel條件格式的能力范圍。那么這是為什么,我們最終的處理的目的是要達(dá)到不僅要找到重復(fù)的銀行卡號而且還要它顯示出哪一行與哪一行重復(fù),那又該如何做呢? 首先分析原因,這是因?yàn)镋xcel的數(shù)字處理精度只有15位,而銀行卡號一般要19位,雖然將銀行卡號的格式設(shè)置為文本格式,但是Excel依然按照數(shù)字格式來處理,并且處理精度依然是15位。 其次理清目標(biāo),就是不僅要找出重復(fù)的卡號,而且還要顯示出第幾行與第幾行重復(fù)。 最后說說如何解決問題。 遇到這樣的問題首先想到的是函數(shù),那么具體應(yīng)用什么函數(shù)呢?實(shí)際上只用四個(gè)函數(shù): 第一個(gè)IF函數(shù)是判斷函數(shù)。 第二個(gè)ROW函數(shù)是顯示行號。 第三個(gè)MATCH函數(shù)是顯示要找的數(shù)據(jù)在某一列或某一行數(shù)據(jù)中的所處的位置。 第四個(gè)CONCATENATE函數(shù)是將多個(gè)單元格的數(shù)據(jù)合并到一起。 利用這四個(gè)函數(shù)的嵌套,在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),'行重復(fù)')) 紅色的公式為算出A2單元格所處的行號為第二行,那么ROW(A2)-1就是2-1=1。 綠色的公式為算出A2單元格中的銀行卡號在A2到A174這個(gè)范圍中第一次出現(xiàn)的位置。 IF函數(shù)的第一參數(shù)對下面這個(gè)等式進(jìn)行判斷: ROW(A2)-1=MATCH(A2,$A$2:$A$174,0) 如果等式成立,就計(jì)算這一部分的公式: CONCATENATE('第',ROW(A2)-1,'行') 公式結(jié)果顯示為第n行。 如果IF函數(shù)對等式判斷后,兩個(gè)條件不成立,就計(jì)算這一部分的公式: CONCATENATE('第',ROW(A2)-1,'行與',MATCH(A2,$A$2:$A$174,0),'行重復(fù)') 公式結(jié)果顯示為第幾行與第幾行重復(fù)。 |
|