今天要整理的是一批「問儲存格問題」的資訊函式:ISTEXT、ISNA、ISERR、TYPE、CELL、ERROR.TYPE 等等。
它們不改資料,只回答問題,像是「這格是文字嗎」「這個錯誤是 #N/A 還是別種」「這格有公式嗎」。我自己最常用的是 ISNA 跟 ISERR,其他的偶爾在除錯時拿來看一下,這篇當作工具書,需要時回來查。
ISBLANK、ISNUMBER、ISERROR 已經在別篇講過了,請看 公式防呆 與 巢狀 IF 與 AND/OR。
怎麼選
下面的例子都用同一份資料,貼在 A1 到 A7:
| 儲存格 | 內容 |
|---|---|
A1 | 蘋果紅茶 |
A2 | 37 |
A3 | TRUE |
A4 | 空白 |
A5 | ,顯示 #N/A |
A6 | ,顯示 #DIV/0! |
A7 | 2026/10/11 |
判斷類型的四個函式,對這份資料的結果:
| 內容 | ISTEXT | ISNONTEXT | ISLOGICAL | ISERR |
|---|---|---|---|---|
| 蘋果紅茶 | TRUE | FALSE | FALSE | FALSE |
| 37 | FALSE | TRUE | FALSE | FALSE |
| TRUE | FALSE | TRUE | TRUE | FALSE |
| 空白 | FALSE | TRUE | FALSE | FALSE |
#N/A | FALSE | TRUE | FALSE | FALSE |
#DIV/0! | FALSE | TRUE | FALSE | TRUE |
重點是兩個:空白格算「非文字」,而 #N/A 不算 ISERR 的錯誤(ISERR 只管 #N/A 以外的錯誤)。
其他函式的分工:
| 想知道 | 用哪個 |
|---|---|
| 值的類型代碼 | TYPE |
| 錯誤的種類代碼 | ERROR.TYPE |
| 日期、Email、公式、參照 | ISDATE、ISEMAIL、ISFORMULA、ISREF |
| 儲存格的位址、列、欄、類型 | CELL、ADDRESS |
| 工作表數量 | SHEETS |
故意回傳 #N/A | NA |
判斷類型
ISTEXT
判斷值是不是文字。
語法:
A1 是不是文字
=ISTEXT(A1)A1 是「蘋果紅茶」,會得到 TRUE,換成 A2 的 37 就是 FALSE。
ISNONTEXT
跟 ISTEXT 相反,不是文字就回 TRUE。
語法:
A4 空白格是不是非文字
=ISNONTEXT(A4)空白格會得到 TRUE,這點跟 ISTEXT 反過來看時容易搞混,所以要確定空白的話,還是用 ISBLANK。
ISLOGICAL
判斷值是不是布林值(TRUE 或 FALSE)。
語法:
A3 是不是布林值
=ISLOGICAL(A3)A3 會得到 TRUE。要注意,如果有人輸入的是文字「TRUE」(例如前面加了單引號),這時候 ISLOGICAL 會回 FALSE,ISTEXT 才是 TRUE。
ISDATE
判斷值是不是日期。
語法:
A7 是不是日期
=ISDATE(A7)A7 的 2026/10/11 會得到 TRUE, 的文字則是 FALSE。純數字不算日期, 是 FALSE;但看起來像日期的文字,例如 ,會是 TRUE; 則是 FALSE。
ISEMAIL
判斷值是不是 Email 格式的字串。
語法:
判斷是否為 Email
=ISEMAIL("tea@example.com")會得到 TRUE,而 是 FALSE。它只檢查格式,不會去確認這個信箱真的存在。資料驗證裡有現成的 Email 規則,大量檢查名單時用它比較省事。
判斷錯誤
ISNA
判斷值是不是 #N/A。
語法:
A5 是不是 #N/A
=ISNA(A5)A5 會得到 TRUE, 的 #DIV/0! 則是 FALSE。
我個人偏好在 VLOOKUP、MATCH 這類查詢外面用 ISNA,因為查不到值是 #N/A,而其他的錯誤(例如參照壞掉的 #REF!)我不想把它藏起來。
ISERR
判斷值是不是 #N/A 以外的錯誤。
語法:
A6 是不是 #N/A 以外的錯誤
=ISERR(A6)A6 的 #DIV/0! 會得到 TRUE,A5 的 #N/A 則是 FALSE。要涵蓋所有錯誤(包含 #N/A)的話,用 ISERROR。
NA
回傳 #N/A 錯誤。
語法:
故意回傳 #N/A
=NA()為什麼要故意製造錯誤?畫折線圖的時候,空白格會被當成 0 或斷線,而 #N/A 圖表會直接略過那個點。所以空白的資料可以這樣補:
空白時回傳 #N/A,其餘照原值
=IF(A4="", NA(), A4)A4 是空白,結果會顯示 #N/A。
ERROR.TYPE
回傳錯誤種類的代碼。
語法:
A6 的錯誤種類
=ERROR.TYPE(A6)#DIV/0! 是 2, 的 #N/A 是 7。對照如下:
| 代碼 | 錯誤 |
|---|---|
| 1 | #NULL! |
| 2 | #DIV/0! |
| 3 | #VALUE! |
| 4 | #REF! |
| 5 | #NAME? |
| 6 | #NUM! |
| 7 | #N/A |
| 8 | 其他所有錯誤 |
例如 是文字加數字,會是 #VALUE!,得到 3。如果參照的內容不是錯誤,ERROR.TYPE 自己會回 #N/A。官方說明把上面 1 到 7 以外的錯誤都歸在 8(其他所有錯誤),Sheets 獨有的 #ERROR! 也屬於這一類。
判斷公式與參照
ISFORMULA
判斷儲存格裡是不是公式。
語法:
A5 裡是不是公式
=ISFORMULA(A5)A5 是 ,會得到 TRUE;A2 是直接輸入的 37, 是 FALSE。接手別人的表,想知道哪些格子是手打的數字,把它放進條件式格式很實用。
ISREF
判斷值是不是參照。
語法:
A1 是不是參照
=ISREF(A1)會得到 TRUE,而 是 FALSE,因為雙引號裡的 A1 只是文字。把文字轉成參照的 INDIRECT 就可以: 是 TRUE。
類型代碼
TYPE
回傳值的類型代碼。
語法:
A1 的類型代碼
=TYPE(A1)A1 是文字,會得到 2。對照如下:
| 代碼 | 類型 | 例子 |
|---|---|---|
| 1 | 數字 | A2 的 37 |
| 2 | 文字 | A1 的蘋果紅茶 |
| 4 | 布林值 | A3 的 TRUE |
| 16 | 錯誤 | A5 的 #N/A |
| 64 | 陣列 | {1, 2} |
日期本質是數字,所以 也是 1。空白格也是 1。
位址與工作表
CELL
回傳儲存格的資訊,第一個參數決定要問什麼。
語法:
- 資訊類型:寫在雙引號裡,常用的有
"address"(位址)、"row"(列號)、"col"(欄號)、"contents"(內容)、"type"(類型)。
A2 的位址
=CELL("address", A2)會得到 $A$2。其他例子: 是 3, 是 2, 是 37。
"type" 傳回單一字母:文字是 l(label),數字等值是 v(value),空白格是 b(blank)。所以 是 l,A2 是 v,A4 是 b。
參照別張工作表的儲存格時,"address" 會帶上工作表名稱並加單引號,例如 '工作表1'!$A$2。另外官方說明還有 "sheet"(工作表名稱)、"color"、"prefix"、"width" 等資訊類型;"filename" 在 Sheets 不支援,會回 #VALUE!。
ADDRESS
由列號與欄號組出位址文字。
語法:
- 絕對相對模式:選填,1 是
$C$2(預設),2 是C$2,3 是$C2,4 是C2。 A1表示法:選填,TRUE 是A1樣式,FALSE 是R1C1樣式。- 工作表:選填,要加到位址前面的工作表名稱。
第 2 列第 3 欄的位址
=ADDRESS(2, 3)會得到 $C$2。 是 C2, 是 C$2, 是 $C2。
ADDRESS 傳回的是文字,要拿它去取值,外面包一層 INDIRECT:
用位址文字取回儲存格的值
=INDIRECT(ADDRESS(2, 1))會得到 A2 的 37。指定第 5 個參數時,位址前面會帶工作表名稱,例如 Sheet2!$B$5;工作表名稱含空白、中文或以數字開頭時會加單引號,例如 'My Sheet'!$B$5。
SHEETS
查整份試算表的工作表總數,先用不帶引數的寫法:
整份檔案的工作表數量
=SHEETS()官方說明將參照列為選填。SHEETS() 回傳整份試算表的工作表數量,不是固定回傳 1。
官方說明雖然把參照列為選填,但在 Sheets 帶參照, 與 都會回 #N/A(ERROR.TYPE 為 7),並不會得到「範圍在同一張所以是 1」的結果。因此本文不推薦帶範圍來數工作表,也不把它當成 3D 參照功能。錯誤案例與 SHEET 的差別,見 SHEET 與 SHEETS。
好,這批函式都是遇到問題才會翻出來看,希望你下次遇到時,這篇剛好用得上!
接下來可以
相關文章
查看所有文章讓公式不容易壞:IFERROR 與 IFNA 的取捨、開放式範圍、檢查格
IFERROR 會連該看到的錯誤一起吞掉,IFNA 只處理 #N/A 比較精準。再加上開放式範圍讓新增的資料自動算進去、資料驗證擋在輸入端,以及放一格檢查格隨時確認結果沒有偏掉。
公式出錯怎麼查:錯誤碼怎麼看,再一步步縮小範圍
公式出現 #N/A、#REF!、#VALUE!、#NUM! 時怎麼讀錯誤碼與滑鼠提示,用 FILTER、XLOOKUP、INDEX、SUMIFS 重現幾個常見的錯,再用彩色框、FORMULATEXT、ISNUMBER 等工具一步步找出原因。
巢狀 IF 與 AND / OR 的陷阱:順序、ARRAYFORMULA 與空白儲存格
整理巢狀 IF 和 AND / OR 常踩的坑:條件順序與邊界值寫反、AND / OR 放進 ARRAYFORMULA 不會逐列判斷、文字和數字比較、空白儲存格被當成 0,並簡單比較 IFS 與 SWITCH。
留言討論
共 0 則留言
