要在 Excel 中最快移除不可見字元,方法是將 CLEAN、TRIM 或 SUBSTITUTE 這類內建文字函式,與一個具備 Unicode 感知能力的瀏覽器工具結合使用;該工具會在刪除前,顯示每個看似空白的字元背後的確切代碼點。Excel 本身的函式只能移除一組固定的 ASCII 非列印字元與一般空格,但無法依名稱識別零寬空格、零寬接合符、零寬不接合符或諺文填充字符。這四種字元家族,是 VLOOKUP 傳回 #N/A、SUM 將數字視為文字、或 COUNTIF 在螢幕上看起來一模一樣的兩個名稱卻判定為不同的常見原因。一個專注的瀏覽器檢查器讓你複製六種常見的不可見字元中的任何一個、把可疑儲存格貼上偵測框,然後在它們的確切 Unicode 代碼點旁,看到像 [ZWSP] 或 [NBSP] 這類易讀的標記。這能把例行的 Excel 清理作業變成可預測的操作,因為你會知道哪個代碼點被移除了、哪些還留著。

為什麼 Excel 一開始就會夾帶不可見字元
工作表中的不可見字元大多是透過複製貼上帶進來的。從 ERP 系統匯出的報告、從供應商網站複製的清單,或從聊天訊息貼出來的欄位,都可能夾帶看起來像一般空格、實際上卻不是的字元。Excel 會將它們算繪成空白像素,所以儲存格看似是空的,實際上卻包含 U+00A0 不中斷空格、U+200B 零寬空格、U+200C 零寬不接合符、U+200D 零寬接合符、U+2060 零寬不斷行符,或 U+3164 諺文填充字符。
這些字元之所以重要,是因為 Excel 公式比較的是代碼點,而不是視覺形狀。不中斷空格和一般空格對 Excel 來說並不相等,即使讀者在螢幕上無法分辨。兩個看起來相同的產品編號可能無法連接,而一個看起來像 1250 的數值可能無法加總,因為 Excel 將它視為字串「1250」而不是數字 1250。Unicode 標準在其代碼表中記載了這些字元,而 Unicode Standard Annex 14 則說明不同平台如何決定哪裡可以斷行,這也是零寬空格能夠在文字沒有任何可見變動的情況下,改變欄位換行方式的原因之一。
最常破壞 Excel 的六種不可見字元
不可見字元工具刻意只揭露一小組:六個常見的代碼點,每個都有明確的名稱與易讀的標記。知道哪一個藏在你的欄位中,是乾淨的工作表和隔天早上得再做一輪清理之間的差別。
| 標記 | 名稱 | 代碼點 | 為什麼會出現在 Excel 中 |
|---|---|---|---|
| [NBSP] | 不中斷空格 | U+00A0 | 從網頁和 HTML 匯出檔貼上,而原本的版面配置使用了不中斷空格。 |
| [ZWSP] | 零寬空格 | U+200B | 由文書處理器、聊天應用程式及某些下載流程插入,用於軟換行。 |
| [ZWNJ] | 零寬不接合符 | U+200C | 用於波斯文、阿拉伯文及印度系文字的字形塑造;當這些名稱被貼到 Excel 時就會出現。 |
| [ZWJ] | 零寬接合符 | U+200D | 強制接合連字或表情符號,經常在從網頁表單複製後殘留下來。 |
| [WJ] | 零寬不斷行符 | U+2060 | 防止詞彙中間斷行,常從 PDF 或格式化文件帶過來。 |
| [HF] | 諺文填充字符 | U+3164 | 常用於使用者名稱和帳號,因為註冊欄位需要一個「空白」。 |
這個工具刻意做得範圍很窄。它並不宣稱能找出在特定字型中看起來空白的每一個 Unicode 字元。它只檢查上述六個代碼點,並以官方名稱和它在貼上字串中的位置來回報每一個。這樣的範圍就是它的安全機制:用這個工具移除時,你知道哪些字元會離開、哪些會留下。
Excel 內建的清理函式與它們的極限
Excel 提供三個初學者最先會想到的文字函式。每個函式移除特定類別的字元,其餘則完全不動,這也是為什麼它們組合使用效果最佳,而不是單獨使用。
- TRIM 會移除字串開頭與結尾的空格,並把內部連續的一般空格壓縮成單一空格。它不會移除定位點、換行符或不中斷空格,所以單靠 TRIM 對匯入資料來說很少夠用。
- CLEAN 會去除前 32 個非列印 ASCII 字元(代碼點 0 到 31)。它針對的是舊式的控制字元集,而非現代的 Unicode,因此儲存格中 U+0080 之後的所有不可見字元,包括上述六個,都會原封不動地留下來。
- SUBSTITUTE 會把一段特定文字替換成另一段。你可以用它把已知的不可見字元換成空字串,但前提是你必須先辨識出儲存格中實際出現的是哪個代碼點。
最後這點是實際操作上的瓶頸。SUBSTITUTE 只有在你能把真正的不可見字元貼到尋找字串引數中時才會生效,而在資料編輯列中操作起來相當麻煩。透過瀏覽器檢查器做一個旁支流程,通常是最快找到確切代碼點、複製一次,然後再丟進 SUBSTITUTE 的方法。
如何使用瀏覽器工具檢查並移除不可見字元
當你不知道哪個不可見字元藏在儲存格裡,或想確認清理動作會移除什麼、再覆蓋掉原始資料時,請使用不可見字元工具。這個工具在本機執行;貼上的文字不會被傳送到伺服器,所以在檢查期間,敏感的客戶資料或定價資料不會離開你的瀏覽器。
- 選擇一個有命名的字元卡,點擊「複製」把該 Unicode 字元準確地放到你的剪貼簿上。卡片會顯示官方名稱與代碼點,讓你知道複製到的是什麼,這在你之後想把真正的 U+200B 放進 SUBSTITUTE 公式時很方便。
- 把可疑 Excel 儲存格的內容貼到檢查器中。文字檢查器會檢查貼上的字串中是否有上述六個代碼點。每個命中處會變成一個易讀的標記,例如 [ZWSP]、[NBSP]、[ZWNJ]、[ZWJ]、[WJ] 或 [HF],並附上以 1 為起點的 Unicode 代碼點位置及代碼點本身。
- 閱讀顯示出來的版本。如果在某個客戶名稱的第 4 個位置出現標記,你不需要捲動公式就能定位到出問題的代碼點。檢查器以 Unicode 代碼點逐一走訪字串,因此表情符號和其他輔助平面字元會被視為單一位置,而非拆成兩個 UTF-16 單位。
- 判斷移除是否合適。如果該儲存格是人名、地址、引述的詞句,或你不懂的語言文字,請先停下來確認被標記的字元是否正在執行實際作用。零寬接合符可能對字形塑造具有意義、不中斷空格可能是排版所需,而零寬不斷行符則可能用於讓詞彙保持連在一起。
- 當移除確實合適時,點擊「移除列出的字元」。這個按鈕只會刪除本頁所標示的這六個字元,並保留一般空格、定位點、換行符、標點符號、字母、表情符號,以及其他所有 Unicode 代碼點。複製輸出中的清理後字串,再貼回 Excel;或者在特定字元卡上點擊「複製」,取得要用於 SUBSTITUTE 的原始代碼點。
移除不可見字元的安全 Excel 流程
將 Excel 函式與瀏覽器檢查器結合的目的,在於在確認刪除內容之前,保留你的原始資料。以下的步驟是為一次處理一個欄位所設計,只使用標準的 Excel 功能搭配瀏覽器工具。
- 在可疑欄位旁邊插入一個輔助欄,例如你的資料在 A 欄,就插入 B 欄,並命名為 Clean。
- 在 B2 輸入 =A2,然後把公式往下複製。這樣在實驗期間可以保留原始儲存格。
- 複製一個可疑的儲存格,切換到不可見字元工具,把儲存格貼到檢查器中,找出其中出現的標記和代碼點。把找到的每個代碼點記下來。
- 在對應的字元卡上點擊「複製」,把該 Unicode 字元準確地放到剪貼簿上。這會提供 Excel 需要的字面位元組序列。
- 在 Excel 中用 Ctrl+H 開啟「尋找及取代」。把複製的字元貼到「尋找目標」欄位,「取代為」保持空白,然後選擇「全部取代」。這會從選取範圍中只移除那一個代碼點,而不會動到一般空格、定位點或換行符。
- 如果你希望清理動作留在公式中,可以用 =SUBSTITUTE(B2, "", ""),或使用你確認過的代碼點所對應的跳脫序列,來取代「尋找及取代」步驟。把公式往下複製,然後用「選擇性貼上」中的「值」,把清理後的字串覆寫回輔助欄。
- 對於一般的不中斷空格以及其他 ASCII 範圍內的字元,可以使用 =TRIM(CLEAN(SUBSTITUTE(B2, CHAR(160), " "))) 來處理常見情況。CHAR(160) 就是不中斷空格,單獨使用 TRIM 並無法移除它。用瀏覽器檢查器確認,上述六個代碼點中沒有其他殘留。
- 目視比對清理後的欄位與原始欄位。如果某一行在視覺上仍和原本一模一樣,但 VLOOKUP 卻失敗,在認定工作表已經清理乾淨之前,請再次將它貼進檢查器。
如果要對整張工作表進行更廣泛的清理,可以參考 如何使用三種模式移除 Google Sheets 中的空白字元,在不同的試算表環境中達到同樣目的;「先檢查再刪除」的原則同樣適用。
什麼時候不該移除不可見字元
不可見字元並不一定是錯誤。其中好幾個承載著 Excel 無法理解,但讀者、排版引擎或輔助科技可能會依賴的意義。盲目地移除它們,正是讓一張乾淨的工作表變成名稱拼錯或連結失效的原因。
- 波斯文、阿拉伯文或印地文名稱中的零寬不接合符或零寬接合符,控制了字形塑造的方式。移除它可能會改變算繪後的文字,讓名稱在閱讀該文字的人眼中看起來錯誤。
- 像「10 kg」這種度量單位或日期中出現的不中斷空格,通常是有意安排的。排版者希望單位或月份與數字緊黏在一起,如果移除它,在後續文件中可能讓數值在換行時被切開。
- 零寬不斷行符經常被用來避免電子郵件地址或多詞詞彙被切開。移除它可能會改變該文字之後被貼到任何文件中時的換行結果。
這就是為什麼上述流程在確認清理結果正確之前,會保留原始欄位不動。瀏覽器工具中的「移除列出的字元」按鈕是清理流程的最後一步,而不是第一步。
Excel 清理方法比較
不同的 Excel 功能涵蓋問題的不同面向。下表根據每個方法能移除的內容,以及如何指定目標字元來比較這些實用選項,讓你能根據實際遇到的字元挑選合適的工具。
| 方法 | 可移除的內容 | 如何指定目標字元 | 最佳用途 |
|---|---|---|---|
| TRIM | 開頭、結尾及重複的一般空白 | 不需參數 | 快速清理帶有多餘空格的貼上段落 |
| CLEAN | ASCII 非列印字元(碼位 0 至 31) | 不需參數 | 移除舊式系統中的舊版控制字元 |
| SUBSTITUTE | 任何你指定的單一字串,包括隱藏字元 | 你需以文字形式提供確切的碼位 | 已知是哪個字元時的精準移除 |
| 尋找與取代 (Ctrl+H) | 對話方塊中貼上的字面字元 | 將碼位貼入「尋找目標」欄位 | 已知碼位時,在選取範圍內大量移除 |
| 瀏覽器開發人員工具加上回貼 | 六種常見的隱藏 Unicode 字元 | 點擊「移除列出的字元」 | 在不明確知道是哪個字元時的偵測與移除 |
最後一列正是隱藏字元工具的適用之處。可用它來辨識儲存格中隱藏的內容,再選擇對應的 Excel 方法進行實際編輯,確保原始資料仍由你掌控。該工具不會對任何其他空白或 Unicode 字元進行正規化或變動,而這種嚴格的作用範圍正是它在你決定進行移除前可安全使用的原因。
想進一步了解,請參閱如何從 Excel 隨機排序姓名清單。