2023-03-19|閱讀時間 ‧ 約 5 分鐘

處理錯誤的 IFNA 跟 IFERROR

這次要介紹的是 IFNA 和 IFERROR 這兩個函式,它們可以幫助我們在試算表中可以靈活處理錯誤和缺失的數據。(延伸閱讀:#N/A、#ERROR! —— 我到底哪裡做錯了?錯誤疑難排解術
語法很單純,但也很實用!我們一起來看看怎麼做。

IFNA

按照 IFNA 字面上的意思來看,它就是「如果值發生 #N/A 錯誤,那就做點什麼事」,的意思。語法很簡單:
=IFNA(值, [#N/A 錯誤時要做的事])
  • 值:要給 IFNA 函式檢查是否有 #N/A 錯誤的值、或儲存格位址。
  • #N/A 時顯示的值:選填,選填,你可以在這裡寫像是「有錯誤」、「!!!」或任何提醒自己有錯誤的文字、數字,或是要執行的函式也可以。如果這邊什麼都不寫的話,IFNA 則會在有 N/A 錯誤時回傳空白;如果沒有 N/A 錯誤的話,那就會正常回傳第一個參數的值。
舉例來說:
=IFNA(A1, 0)
把上面這東西翻成白話文的話,就是:
  • 如果 A1 是 #N/A 錯誤,那就回傳 0。
  • 如果 A1 不是 #N/A 錯誤,那就回傳 A1。
所以你可以把它 IFNA(還有等等要介紹的 IFERROR)當作一個保險,來確保就算函式運算出現 #N/A,也還會顯現對應的值,讓你做後續的計算或是除錯。
如果我要用 XLOOKUPVLOOKUP、HLOOKUP、MATCH、QUERY 這類查詢類的函式,也預期到有可能會發生 N/A 錯誤的話,我通常就會包一層 IFNA,像是這樣:
=IFNA(VLOOKUP(...
=IFNA(QUERY(...

IFERROR

再來是 IFERROR。它其實也是類似的概念,也就是「如果值發生任何錯誤,那就做點什麼事」的意思。語法也很像:
=IFERROR(值, 錯誤時要做的事)
定義也和剛剛差不多:
  • 值:要給 IFERROR 函式檢查是否有錯誤的值、或儲存格位址。
  • 錯誤時要做的事:選填,你可以在這裡寫像是「有錯誤」、「!!!」或任何提醒自己有錯誤的文字、數字,或是要執行的函式也可以。如果這邊什麼都不寫的話,IFERROR 則會在有錯誤時回傳空白;如果沒錯誤的話,那就會正常回傳第一個參數的值。
例如說:
=IFERROR(AVERAGE(A1:A10), "有錯誤!")
把上面這串一樣翻成白話文的話:
  • 如果 AVERAGE 的運算有錯誤,就會回傳「有錯誤!」這串文字
  • 如果 AVERAGE 的運算沒有錯誤,就會回傳 AVERAGE 的計算結果
它跟剛剛看到的 IFNA 的唯一差別,就是 IFERROR 可以處理任何一種錯誤,而 IFNA 只會處理 N/A 錯誤。
那你可能會問:

我可以用 IFERROR 就好了嗎?

當然可以!但我喜歡把 IFNA 跟 IFERROR 這兩個函式分開用途用。在這邊分享一個在實務上遇到的例子,或許可以說明為什麼我喜歡這麼做。
我某天在寫函式的時候,拼錯了一個字母:
=IFERROR(VLOKUP("我想找這個", A1:B10, 2, false), "有錯誤!")
我原本想寫的是 VLOOKUP,但沒意識到拼錯了。IFERROR 的確會讓我會知道這串函式「有錯誤!」:
可是我當時以為是 VLOOKUP 沒在指定的範圍內找到值、或是我資料格式沒做對、或是什麼我沒遇過的狀況,可是繞了一大圈後,才發現原來是自己函式拼錯,資料根本沒問題。
可是如果我一開始寫的是:
=IFNA(VLOKUP("我想找這個", A1:B10, 2, false), "有錯誤!")
這時候 IFNA 會回傳 #NAME? 錯誤:
這樣我一開始就根本不用花時間瞎忙瞎猜,因為它明確提示我的函式可能拼錯了!

如果你喜歡這次的文章,歡迎你透過這些方法支持我:
・按下愛心、按下儲存
・留言告訴我你的想法
・加入喜特先生的官方沙龍,即時看到我發布的教學
・付費訂閱喜特先生的官方沙龍,加入每月小額訂閱方案
・追蹤喜特先生的 Facebook
・按這邊小額贊助我的創作!
想要看更多文章,歡迎來到我的 Notion 頁面找找有沒有你需要的資源喔!
我是喜特先生,Mr. Sheet,我們下個教學見!
分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.