工作中我們經常會在Excel中遇到看上去一模一樣的數據,但是在數據校驗時卻提示FALSE。這說明這些數據實際上是不同類型的數據。那麼這些數據是怎麼來的,又該怎樣辨別和解決問題?下面筆者以Excel 2016為例,結合一些實例為大家介紹相應的解決方案。
文|俞木發
情況1:小數位數及浮點數不一致導致的
在日常使用SUM函數計算工資表總計數據的時候,統計員總是發現統計的總和數據和計算器統計的數字看上去一樣(都是77898.65),但是使用公式“=I13=J13”驗證時卻提示FALSE,表示這兩個數據其實是不一樣的(圖1)。對於財務人員來說,數據不一致就要重新仔細核查,無形中增加大量的工作量。
這個原因其實是由於浮點存在導致統計誤差,解決這個問題方法是使用ROUND函數對數值進行四捨五入計算。在I15單元格中輸入公式“=ROUND(I13,2)”,這樣統計的數字就是正確的了(圖2)。而將I13單元格的格式設置為“常規”,它的實際數字為77898.65333,所以和J13單元格是不相等的數字。
情況2:單元格類型不一致導致
在Excel中數據的類型有很多,比如文本、日期、數字等,因此在一些單元格中看上去一樣的數據,由於類型的不同也會導致出錯。比如在使用MID函數從A列文本中提取日期數據,從外觀上看B、D列的日期數據是一樣的,但是在C列使用“=B2=D2”核查,全部顯示為FALSE,顯然也不是同樣的數據(圖3)。
其實MID函數提取到的字符都是文本數據(只是看上去像是數字或者日期而已),而日期實際就是一種特殊的數字,因此B、D列是完全不同類型的兩種數據。可以將D列數據類型設置為“常規”,這些日期實際為44836、44837⋯⋯的數據,它和B列顯然是不同的(圖4)。
解決方法是將文本型數據轉化為日期,只要在原來B列的公式後添加“*1”(表示乘以1)即可。這樣再核驗就不會出錯了。
情況3:顯示格式導致的問題
在Excel中為了更方便顯示數據形式,可以使用Text函數進行自定義格式顯示,但是這樣很容易誤導我們的視覺。比如下面B列和C列的數據看上去是不是一模一樣?但是使用公式檢驗後卻顯示FALSE(圖5)。
定位到B2單元格可以看到,B列實際上是使用TEXT函數設置的日期文本格式,本質上是文本數據,它和C列日期數據不一樣。解決方法同上,在公式後面添加“*1”即可讓B、C列數據類型一致了。
情況4:數據包含空格
從一些系統中導出或者網上覆制的數據,數據中間經常會包含空格,由於空格不會在單元格中顯示出來,因此一些數據看上去一樣,實際由於空格的存在,它們是兩種完全不同的數據。這類錯誤經常出現在文本數據計算時,比如通過LEN函數計算字符長度,空格在Excel就相當於是一個字符,所以A2和C2的字符長度是不同的(圖6)。對於空格的去除,可以使用TRIM函數,比如在E2單元格輸入“=TRIM(C2)”,這樣就可以將單元格中的空白字符刪除了。
情況5:數據包含空值
在Excel中,空值("")和空其實是不同類型的字符,前者是一個字符(空值),後者則是全空沒有任何內容。但是在Excel中,從外觀看上去這兩類字符的顯示是一模一樣的,這樣在公式的引用中使用不當就會出現錯誤。
比如下表中的J7單元格使用了“=IFERROR(js,"")”公式,使用IFERROR函數將沒有數據顯示的賦值為“""”,在外觀看上去和常見的空單元格並沒有什麼不同,但是這卻導致M7單元格的公式出現錯誤(圖7)。
M7單元格中的公式為“=J7-H7”,其中H7為空單元格,這樣公式實際就是“=""-空單元格”,在Excel中空值無法和0(即空單元格)運算,最終導致M7單元格提示公式出錯(圖8)。
因此,在Excel的公式中,如果要讓空值所在的列參與公式的運算,那麼就需要將其顯示為“0”值,這樣參與運算才不會出現錯誤。解決的方法是將J7單元格的“=IFERROR(js,"")”公式更改為“=IFERROR(js,0)”,這樣就不會出錯了。大家在日常使用中需要注意這一點。CF
原文刊登於2022 年 12月1 日出版《電腦愛好者》第 23 期
END
更多精彩,敬請期待……