通配符在數(shù)字和文本中的差別表現(xiàn)(來源于www.excelpx.com,謝謝作者!)
今日論壇答題遇到會員提問超過18位數(shù)字的重復(fù)性判斷問題,用countif函數(shù)判斷為什么加通配符*才行。以前上課學(xué)過,也沒具體分析原因,今天突發(fā)興致,就來探討探討 通配符*在數(shù)值和文本中的差別表現(xiàn)。 首先來說說excel中的一些基本常識,作為今天探討的基本前提: a,excel中數(shù)據(jù)有3種常見數(shù)據(jù)類型:文本(非數(shù)字型文本,數(shù)字型文本),數(shù)值(數(shù)字,時間),邏輯值。 b,數(shù)字型文本是一類特殊的文本,通常指輸入純數(shù)字后通過設(shè)置文本格式或者在輸入前加'(單引號)形成的。我們將其他類型的文本歸為非數(shù)字型文本一類,通長為 字母,符號,漢字,數(shù)字或者其他語言混合形成的文本。 c,excel數(shù)值的精度為15位,在不設(shè)置格式的情況下,輸入超過15位長度的數(shù)值,從第16位開始都會自動變成0。 d,通配符*用來代替一個或任意多個字符。 下面來看看通配符在數(shù)字和文本中的差別表現(xiàn): 1,都為數(shù)值型:如下圖A1,A2全為數(shù)值,B1輸入公式=countif(A:A,A1&"*")下拉。 我們會想:通配符*用來代替一個或任意多個字符,21不是符合 2&"*" 一類么,為什么結(jié)果為0,而不是2?上圖中我們看到一個很有意思的結(jié)果,A4,B4分別為數(shù)值和數(shù)字型文本,雖然看起來是一樣的,但是比較起來卻返回結(jié)果False。也就是說數(shù)值21不匹配文本21&"*" 一類,所以B1結(jié)果為0。那為什么B2結(jié)果不為1?因為數(shù)值21不匹配文本21&"*" 一類,數(shù)值2也不匹配文本2&"*" 一類。 2,數(shù)值型和數(shù)字型文本:再看看下圖:A1變成數(shù)字型文本,這時候 文本21匹配文本21&"*" 一類,所以B1結(jié)果為1,文本21也匹配文本2&"*" 一類,所以B2結(jié)果為1。 3,都為數(shù)字型文本或都為文本:下面的結(jié)果就更好理解了,A1,A2都是數(shù)字型文本,2,21都匹配文本2&"*" 一類,B1=2,21匹配文本21&"*"一類,B2=1。 說到這里相信大家對通配符在數(shù)值和文本中的差別表現(xiàn)有所了解了?;氐缴厦娴膯栴},超過18位數(shù)字的重復(fù)性判斷。如下圖 B5:B7中公式結(jié)果(為了便于區(qū)分,將數(shù)據(jù)變動的位置做了紅色突出顯示,不會對文本內(nèi)容形成本質(zhì)的改變),對比A5,A7在第17位的位置做了改變,A6在第15位改變。雖然A5,A7結(jié)果本質(zhì)上不一樣,但是公式COUNTIF(A$5:A$7,A5)的結(jié)果卻是2。這是上面說到的第c條,excel數(shù)值的精度為15位,雖然A5:A7都是數(shù)字型文本,但是公式在運算(任意空白單嚴(yán)格輸入公式=A1+0,結(jié)果為變成123456789123456000)的時候,自動忽略15位以上的數(shù)字或者說15位以上的數(shù)字都當(dāng)做0來看(具體原因因為沒有源代碼參照,不知道具體的運算過程),所以把A5,A7當(dāng)成一樣的,B5,B7的結(jié)果返回2,而A6是第15位變動的,不會變成0,跟B5,B7不一樣,所以結(jié)果為1。 那為什么加了通配符結(jié)果就能區(qū)分A1和A3(同A5和A7)呢?因為A1&"*"返回的是 123456789123456789* ,這是一個文本,且不是數(shù)字型文本,不能作四則運算,再怎么變化(其實關(guān)到籠子里變不了了),15位以上的不會變成0了,所以穿了個馬甲,excel就認(rèn)識這個小樣了,所以能夠區(qū)分差異。 以上就是我說理解的 通配符在數(shù)值和文本中的差別表現(xiàn),因為個人水平有限,有遺漏差錯之處,還請指正,謝謝。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點擊舉報。