處理錯誤的 IFNA 跟 IFERROR

閱讀時間約 4 分鐘
這次要介紹的是 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,我們下個教學見!
7.1K會員
147內容數
簡潔,快速,有效, 讓你的日常生活、工作生產力大提升! ___ 快按「加入」,馬上追蹤所有喜特先生的更新,有 Google 試算表教學、Google Apps Script 的研究、數據分析課程的開箱,還有 Google 試算表疑難雜症的解題分享唷!💪
留言0
查看全部
發表第一個留言支持創作者!
你可能也想看
因為年輕而犯下的錯-少年犯罪處裡 由溫毓梅律師、徐因皜法務共同撰寫 在今年1月19日,日本的甲府地方法院對被告遠藤裕喜判決死刑,判決當天,各大媒體爭相報導,因為這是在日本少年法修法後,第一件對「特定少年」做出的死刑判決[1],這名少年後續撤回上訴,成為日本第一宗「特定少年」死刑確定的案件[2]。這位被告遠藤裕喜,是對同班的女同學求愛不成,便前往對方的家中刺殺其父母,
Thumbnail
avatar
有一種潮流叫法律-温毓梅律師
2024-03-26
Golang - Gin #18: 錯誤處理和日誌記錄當我們談論 Web 應用開發時,錯誤處理和日誌記錄是兩個相對容易被忽視,但卻非常重要的環節。在本文中,我們將探索如何在 Gin Web 框架中實現這兩項功能。
Thumbnail
avatar
KH Huang
2023-09-24
【🔒 Python 先修班】🆘 正確的處理例外錯誤(Try…Except…), 讓我們降低例外的錯誤因子學習軟體開發的路上常常苦於網路資訊爆炸嗎? 教學何其多,但卻遇到無法明確選擇的困境呢? 歡迎加入「🔒 阿Han的軟體心法實戰營」, 這裡不給您冗餘的雜訊, 單刀直入直接送您業界開發重點, 避開選擇障礙的困境, 讓您獲得業界標準的開發起手式, 成為Top 1的頂尖人才。 人生的道路中總會來點意外與
Thumbnail
avatar
阿Han
2023-09-12
錯誤處理的精髓:快速了解Go語言的 error、panic和recover👨‍💻簡介 在軟體開發中,錯誤無所不在。無論是網路請求失敗、檔案不存在,還是數學計算錯誤,處理錯誤是任何開發者的日常工作,系統的穩定度基本取決於對於錯誤處理是否全面,好的錯誤處理也可以產生適當的錯誤訊息,讓 Debug 更加容易。
Thumbnail
avatar
wang alan
2023-09-07
[C#] 使用try-catch捕捉與處理錯誤在程式設計中,錯誤處理是一個不可或缺的部分。C#提供了強大的錯誤處理機制,讓我們能夠更有效地管理和處理程式執行中可能出現的問題。本篇文章將帶你深入了解如何在C#中捕捉與處理錯誤,確保你的程式在遇到問題時能夠優雅地回應。
Thumbnail
avatar
Pochi
2023-08-22
人資找錯人怎麼辦?沒關係,透過績效管理來處理!身為人資或是用人主管都一定清楚找到"對的人"很重要,找到"對的人"不但可以減少公司各項成本,幸運的話,還可能馬上替企業帶來不錯的績效! 但現實總是殘酷,不一定每次招募都這麼順利,難免都會看走眼,找到"不對的人"進到公司。而另一種狀況更是特別,所謂"對的人"不一定永遠都是"對"的,也可能未來變成"不對
Thumbnail
avatar
人資行不行│人資布朗
2022-11-20
少年法庭:犯錯之後的處理方式將決定你是什麼樣的人 – 卡西法觀影看人生Netflix韓劇《少年法庭》劇情講述一個在極度厭惡少年犯的心情及追求公義刑罰的堅定信念間努力求取平衡的法官,在凡事講求情分的同僚協同下,面對不同的少年犯罪事件,在每次審判的過程中,隨著主角們的調查一步步揭開加害者與被害者完全不同的心境,也帶出主角們隨之而生的情緒轉折與碰撞。
Thumbnail
avatar
嗨!卡西法
2022-11-09
職災個案-意思表示錯誤與處理流程!裁判字號:臺灣高雄地方法院 109 年度勞訴字第 145 號民事判決 裁判日期:民國 111 年 06 月 29 日 裁判案由:確認僱傭關係存在等 主  文:確認原告與被告間僱傭關係存在。 原告主張: 原告受僱於被告公司,月薪新臺幣43,000元,原告於民國106年8月2日上班途中,在進入工作場所高
Thumbnail
avatar
鄒靜修
2022-11-01
B2B國際業務 - 收到代理商訂單,卻發現價格算錯了! 分享幾個可行的處理方法。身為B2B業務,應該有遇過這樣的狀況,收到客戶訂單,高興沒幾分鐘後發現,慘了,價格算錯了。 這種時候該怎麼辦? 基本上也就兩個處理方向 摸摸鼻子認帳。 不認帳,跟代理商說報錯了,並提供正確的報價。 但實務處理上根據以下兩種狀況要考慮
Thumbnail
avatar
杭特 | 業務可頌
2022-05-07
智能合約開發實戰(九) - 錯誤處理函數(require、revert、assert)在寫程式裡面,錯誤的檢查和處理是一定要有的,也是相對重要的,但Solidity裡面並沒有ErrorMessage這種東西,有的是Require()、Revert()、Assert()這三個函數,作用大概也跟ErrorMessage差不多,這裡介紹這三種函數的用法
avatar
宅D嘉
2022-03-05