我們在使用試算表的時候,很難一生順遂,總是有遇到各種錯誤的時刻。
Excel 與 Google Sheets 是兩大常見的試算表,兩者都共用相同的錯誤代碼。如果你偶爾使用一次試算表,遇到錯誤就算了。但如果你要常常用試算表來計算、分析,知道哪些常見的錯誤並且快速處理,或者轉換錯誤值,是很重要的能力。
常見的7大錯誤
由於試算表內的錯誤已經被給了編號,所以接下來以錯誤編號排序介紹:
#Null Error.type = 1 範圍運算符號錯誤
這個錯誤 #Null 的起因是函數內範圍符號有錯,例如
SUM(A1:A5) 打成了
SUM(A1 A5),漏了應該有的 : 或者 ,
#DIV/0! Error.type = 2 除數為0錯誤
這個 #DIV/0! 錯誤已經很直觀了,就是在計算中以 0 作為除數,這樣 Excel 會覺得你太過分。
#VALUE! Error.type = 3 計算錯誤
這個錯誤 #VALUE! 是在任何公式計算中,出現了無法被計算的東西,例如
= 10 + Taipei
如果Taipei沒有事先被指定數值,這樣就會出現 #Value!,看到這個錯誤就要立刻檢查公式內非數字的項目。
#REF! Error.type = 4 參照範圍錯誤
這個 #REF! 錯誤是指試算表內,已經找不到公式想要參照的對象,這個原因有幾個。首先,是參照對象被刪除了,最常見的狀況是參照到某個 Sheet,但整個 Sheet 被砍掉,或者某欄、某列被刪除,都會出現 #Ref。
另外一個狀況就是 Vlookup 發現你要找的欄,在你指定的陣列外面,例如 你要找
Vlookup(Z1, B2:C5, 3)
要找的第3欄,落在下圖紅色的區域,也會出現 #REF!。
#NAME? Error.type = 5 拼寫錯誤
這個錯誤 #NAME? 通常發生在函數的名稱寫錯,或者函數內出現了錯誤的名稱。例如
Sum() 打成 Sumo()
亦或是
Len("Taiwan") 變成 Len(Taiwan)
#NUM! Error.type = 6 無效數值錯誤
這個 #NUM! 錯誤是數字超過函數或者試算表的範圍,也就是「算不出來」,例如你打 =500^500,Excel或 Google Sheets 就會出現 #NUM!,跟你說這個數字它拒絕計算。另一種狀況是 =SQRT(-16),但裡面原本函數設定是 SQRT() 內應該要有正數,也會出現 #NUM!
#N/A Error.type = 7 查找錯誤
這個錯誤 #N/A 通常出現在查找時,根本找不到需要被查找的項目(與#REF!不同),例如在下列的 Vlookup 中,我要找 London 的值 Vlookup("London", B2:C5, 2),但是根本沒有 London,就會出現 #N/A,也就是下圖藍色的區域。
以上圖為例,如果要查找的範圍不存在(紅色區域),是 #REF!,但如果在 City 列就不存在(藍色),則是 #N/A錯誤,兩者有點類似,請注意。LOOKUP()、VLOOKUP()、HLOOKUP()、MATCH() 都會出現 #N/A 錯誤。
Error.Type()
如果你要給資料驗證,Error.Type() 可以反過來給出錯誤的編號,例如你可以透過 =Error.Type() ,得到 #DIV/0! 的編號是2,再用 IF() 提醒一旦看到編號2的錯誤,就提醒除數為 0。
錯誤的處理
如果遇到了錯誤值,在 Excel 或 Google Sheets 通常有下列方式可以處理:
IFNA()
IFNA 是特別針對 #N/A 錯誤的函數,假如我希望在 vlookup 查找時,出現 #N/A 時不要看到 #N/A,而是有特別的數字,我可以用 IFNA(Vlookup("London", B2:C5, 2, False), "沒有資料"),這樣一旦遇到了這樣的情況,會自動出現「沒有資料」。
IFError()
IFError() 是針對所有錯誤值的函數,如果我希望遇到錯誤時就出現特殊的提醒或者值,都可以用 IFError()來處理,例如我希望遇到 #DIV/0! 時自動變成零,我可以輸入 =IFError(10/0,0),這樣遇到錯誤時,馬上就以0取代。