書譯
書譯

如何翻譯 Excel 試算表而不破壞公式或下拉選單

找出逐格翻譯工具在 .xlsx 檔案中會跳過的文字(公式文字、富文字、連結、圖表、巨集),修正它可能破壞的下拉選單與代碼,並用免費腳本和測試活頁簿檢查結果。

BookTranslator

BookTranslator Team

22 分鐘閱讀

若要翻譯整本 Excel 活頁簿,請將 .xlsx 檔案上傳到文件翻譯工具,而不是逐格翻譯。Excel 內建的「校閱 > 翻譯」指令只會處理您選取的文字(Microsoft 支援),這對單一標籤來說沒問題,但對價格清單來說就很慢。檔案翻譯工具會讀取每個文字儲存格、進行翻譯,再寫回相同位址,因此公式、數字和日期都會留在原位。

它沒告訴您的是,哪些文字它從未讀取。輸入在公式內的文字、含有單一粗體字的儲存格、連結、註解、圖表標題:在逐格翻譯中,這些全都可能以原始語言傳回。而且有兩件事可能出錯:允許值未被翻譯的下拉選單,以及被翻譯的產品代碼。

我們建立了一個雙工作表的測試活頁簿,在每個上述位置都放入文字,寫了一個免費檢查工具來列出文字所在位置,並透過 BookTranslator 所用試算表處理的本機重現來執行該活頁簿。本指南說明傳回了什麼、上傳前該變更什麼,以及如何檢查翻譯後的檔案。

快速解答:活頁簿中哪些內容會被翻譯

文字所在位置我們測試中的範例BookTranslator 是否翻譯?該怎麼做
純文字儲存格,包括標題列「藍色筆記本」、「價格」是無需處理
數字、日期、布林值4.5, 2026-10-30保持原樣檢查目標市場的數字格式
公式=C2*D2保持原樣無需處理
公式內的文字=IF(D2>5,"In stock","Low stock")否將文字移到儲存格中(參見步驟 2)
混合格式的儲存格「限量版鋼筆」不會,整個儲存格會被跳過先清除格式,或手動翻譯
超連結儲存格「產品頁面」不會翻譯後再編輯連結文字
下拉式儲存格中的值「文具」會,但下拉式清單不會修正清單,否則儲存格會失效
含字母的代碼「A-77」、「B-09」會送給翻譯工具翻譯後請檢查
僅含數字或符號的代碼"00123"保持原樣無需處理
備註與註解「發布前確認供應商名稱」不會手動翻譯,或直接刪除
工作表名稱與具名範圍「Products」、PriceRange否,這樣跨工作表公式才能繼續運作只有在必要時才手動重新命名工作表,並先檢查公式
圖表與巨集長條圖、VBA 專案在我們的測試中已從翻譯後的檔案移除保留原始檔案,之後再重建(見下文)

不接受較舊的 .xls 檔案。請先在 Excel 中開啟並另存為 .xlsx。接受啟用巨集的 .xlsm 檔案,但上傳前請先閱讀巨集相關章節:翻譯後的檔案不含巨集,若下載的檔案仍以 .xlsm 結尾,請在開啟前重新命名為 .xlsx。

步驟 1:對您的工作簿執行檢查工具

下載 check_xlsx_text.py 並對您的檔案執行:

python3 check_xlsx_text.py "Price list.xlsx"

它只需要 Python 3,且讀取檔案時不會變更內容。以下是我們的範例工作簿的摘要:

Counts by location:
  cell         code, ID or address        2
  cell         link text                  1
  cell         mixed formatting           1
  cell         plain text                 15
  comments     comment or note text       1
  dropdown     list of allowed values     1
  formula text text inside a formula      6
  sheet        sheet name                 2
  workbook     defined name               1

Plain text cells (translated by a cell-by-cell translator): 15
Items that need a decision before you upload: 12

在計數下方,它會列出每個項目及其工作表和儲存格,例如 Products!E2 formula text 'In stock'。請將該清單作為步驟 2 的待辦清單。若您的工作簿包含圖表、文字方塊、樞紐分析表或巨集專案,它們也會顯示在計數中。

README 說明了範例工作簿、列出檔案雜湊,並連結至建置該工作簿的指令碼,讓您可以重複測試。

我們的測試工作簿發生了什麼事

我們將範例工作簿交由 BookTranslator 試算表處理常式所使用的程式碼處理,於 2026-11-01 在本機以相同程式庫(ExcelJS 4.4.0)重現。我們並未使用真正的翻譯,而是使用在每個儲存格文字前加上「[DE]」的預留位置。這樣可將語言模型排除在測試之外,因此結果只顯示檔案處理傳送、保留和捨棄的內容。

處理常式會逐格讀取每個工作表。只有當儲存格包含純文字值時,才會將該儲存格送去翻譯,並跳過僅由數字、標點符號和符號組成的文字。儲存格方格中的其他所有內容都會原樣複製。BookTranslator 接著會傳回兩個檔案:翻譯後的工作簿和雙語工作簿。

翻譯後的工作簿

這是您要使用的檔案。全部 6 個公式、7 個數字和日期、貨幣和日期格式、合併儲存格、註解、下拉式規則和具名範圍都原樣傳回。9 個標題儲存格和其他純文字儲存格已就地翻譯。有三個結果需要留意:

公式內的文字會保留來源語言。 Status 欄使用了 =IF(D2>5,"In stock","Low stock")。公式不是文字儲存格,因此處理常式永遠不會讀取它,而「In stock」在每一列都保持英文。這同樣適用於以 & 或 CONCAT 串接的文字,以及 HYPERLINK 內的文字。

翻譯後的下拉式值不再符合其清單。 儲存格 H2 有一個下拉式清單,允許「Stationery, Office, Art」。該儲存格的值已翻譯,但清單儲存在驗證規則中,而非儲存格中,因此未被翻譯。我們的檢查工具比較模式回報如下:

Problems: 3
  Products!A3: code changed: 'A-77' -> '[DE] A-77'
  Products!A4: code changed: 'B-09' -> '[DE] B-09'
  Products!H2: '[DE] Stationery' is not in its dropdown list ['Art', 'Office', 'Stationery']

Excel 會保留違反驗證規則的值,但下一個開啟下拉式清單的人只會看到舊選項,而「資料 > 圈選無效資料」會標記該儲存格。

含字母的代碼會被送去翻譯。 「00123」因為只含數字而被跳過。「A-77」和「B-09」因為含有字母而被送出。代碼是否原樣傳回取決於模型;檔案處理過程中沒有任何機制保護它。若 SKU 傳回為「A-77-Artikel」,會破壞所有使用它的查閱。

雙語工作簿

雙語檔案會在每個至少有一個已翻譯儲存格的欄位右側插入翻譯欄,標題如「Name (Translated)」。它會將儲存格值移至新欄,但不會移動儲存格格式或更新公式。在我們的測試中:

  • 價格格式 $#,##0.00 留在 C 欄,該欄現在存放產品名稱,而價格移至 E 欄時則沒有該格式;
  • 日期格式仍留在 G 欄,但該欄現在存放的是數量,因此數量 10 會顯示為日期;
  • =C2*D2 移到了 K 欄,但仍指向 C2 和 D2,而這兩個儲存格現在存放的是產品名稱及其譯文,因此無法再傳回 45;
  • 在「摘要」工作表上,=SUM(Products!F2:F4) 現在加總的是一個空的譯文欄。

因此,雙語活頁簿是用來並排閱讀原文與譯文的,不是用來計算的。請勿編輯它,也不要從中複製公式。

圖表與巨集

在活頁簿的另一個副本中,我們新增了一個圖表和一個巨集專案,並以 Excel 儲存它們的方式存放。兩者都不在譯文檔案或雙語檔案中。ExcelJS 會讀取和寫入工作表、樣式、共用文字、圖片、表格和註解,但沒有處理圖表組件或 VBA 專案的程式碼,因此儲存時會將它們省略。同樣的程式碼也沒有處理樞紐分析表的功能,因此預期樞紐分析表也會被捨棄,儘管我們並未實際測試。此外,處理常式會將輸出儲存為 .xlsx 檔案,而該格式無法容納巨集。

測試還有一個限制:我們是用 ExcelJS 本身來建立範例活頁簿,這是對保留格式、合併儲存格和驗證規則最有利的情況。由 Excel 儲存的活頁簿可能包含 ExcelJS 未建模的功能,因此請對您自己的檔案執行下方的比較步驟,而不要假設會得到同樣乾淨的結果。

步驟 2:上傳前先準備活頁簿

請在副本上操作。檢查工具會告訴您需要變更哪些儲存格。

  1. 將公式中的文字移入儲存格。 將文字放在一個小型的「Labels」工作表中,並讓公式指向它們:=IF(D2>5,Labels!$A$1,Labels!$A$2)。標籤儲存格是純文字,因此會被翻譯,而每個公式都會取得譯文。這一個變更通常就能修正大部分的「公式文字」計數,因為相同的片語往往會沿著整欄重複出現。
  2. 將下拉式清單移入儲存格。 在「資料」>「資料驗證」中,將來源從輸入的清單(Stationery,Office,Art)變更為 Labels 工作表上的範圍(=Labels!$B$1:$B$3)。清單值接著會連同使用它們的儲存格一起被翻譯。之後請檢查幾個儲存格:只有當模型在兩處以相同方式翻譯「Stationery」時,下拉式清單才會接受翻譯後的值。
  3. 清除混合格式。 一個儲存格中若有一個粗體或彩色的字,會以格式化文字片段儲存並被完全跳過。請選取該儲存格並選擇「常用」>「清除」>「清除格式」,或重新輸入,然後在翻譯後重新套用粗體。如果您有許多這類儲存格,請先將它們記錄下來。
  4. 決定如何處理附註和註解。 它們不會被翻譯。請刪除您不想傳送給翻譯服務的審閱附註,其餘的則手動翻譯。
  5. 將巨集活頁簿儲存為 .xlsx。 保留您的 .xlsm 作為主檔案。翻譯 .xlsx 副本,然後將翻譯後的文字欄複製回主檔案(選擇性貼上 > 值,僅限文字欄,以免覆寫公式),或匯出 VBA 模組並匯入翻譯後的檔案。
  6. 圖表留待稍後處理。 圖表中的文字很少:標題、軸標題,以及通常來自標題儲存格的圖例。通常更快的方法是從相同的範圍在翻譯後的活頁簿中重建圖表,或將翻譯後的文字欄貼回原始活頁簿,讓其圖表和樞紐分析表自行更新。

步驟 3:翻譯整個檔案

在文件翻譯頁面上傳 .xlsx,選擇目標語言,並在付款前確認顯示的價格。整份檔案上傳會在一次任務中翻譯每張工作表上的每個文字儲存格,這使得第 3 列和第 3,000 列的產品名稱更容易保持一致。我們的建立翻譯詞彙表指南說明了如何固定不可變更的術語。

任務完成後,「歷史記錄」頁面會提供兩種下載。請使用翻譯後的活頁簿。只有在與通曉兩種語言的人一起審閱措辭時,才開啟雙語活頁簿。

如果您使用 Google 試算表,還有另外兩種途徑。Google 翻譯的「文件」分頁接受最大 10 MB 的 .xlsx 檔案(Google 翻譯說明);我們的Google 文件翻譯指南比較了其選項。此外,試算表有一個 GOOGLETRANSLATE(text, source_language, target_language) 函式(Google 文件編輯器說明),您可以將其填入來源旁邊的新欄位。這對於一欄短標籤來說很方便,但結果是公式,因此請在分享試算表之前將它們貼為值。DeepL 也會翻譯文件;請參閱其文件限制在實務上的意義。無論您使用什麼工具,請先對來源執行檢查工具:公式、連結和圖表中的文字無論由哪個工具讀取,都位於相同的位置。

步驟 4:檢查翻譯後的活頁簿

  1. 執行比較模式。 將來源檔案和翻譯後的檔案並排放置:

    python3 check_xlsx_text.py --compare "Price list.xlsx" "Price list (translated).xlsx"
    

    它會檢查每個公式、數字和日期是否未變更,包含字母的代碼是否完全保持原樣,以及每個下拉式清單值是否在其清單中。請僅對翻譯後的活頁簿使用此功能。由於雙語檔案會移動欄位,幾乎每個儲存格都會被回報。

  2. 重新計算。 如果您修正標籤後公式仍顯示舊文字,請按 F9(或「公式」>「立即計算」)。

  3. 翻譯剩餘部分。 使用步驟 1 中檢查工具的清單:連結文字、附註、圖表標題,以及您清除格式的任何儲存格。

  4. 留意被截斷的文字。 譯文通常比原文長,而短字串的增幅最大。W3C 引用 IBM 的準則指出,從英文翻譯成歐洲語言時,10 個字元以內的文字平均會膨脹到 200–300%(W3C)。欄位標題通常很短,因此請加寬欄位,或在文字被截斷處開啟「自動換行」。

  5. 檢查數字與日期的顯示方式。 值本身並未被更動,但「4.50」對德語讀者而言可能需要顯示為「4,50」。這是儲存格格式或地區設定,而非翻譯。

  6. 不要「修正」函數名稱。 如果同事的法文版 Excel 顯示 SOMME 而非 SUM,那是 Excel 顯示其自身的本地化函數名稱;公式本身並無不同。

  7. 設定由右至左的工作表。 針對阿拉伯文、希伯來文、波斯文或烏爾都文,請開啟「版面配置 > 工作表由右至左」,並檢查儲存格對齊方式。

  8. 若文件要交給客戶(例如價目表或產品目錄),請找一位流利的讀者審閱。 機器翻譯是很好的初稿,但不是最終版本。

CSV 與 TSV 檔案

.csv 檔案沒有公式、格式或下拉式選單,因此上述大部分問題都不會出現。有三點不同:

  • 標題列不會被翻譯。 處理程式會將第一列視為標題,只翻譯資料列。請手動翻譯標題,或在翻譯前將標題複製到資料列,翻譯後再移回。
  • 整欄會被視為一個整體翻譯。 若某欄中任何儲存格含有字母,該欄中所有含字母的儲存格都會被送出,包括代碼在內。比對模式只讀取 .xlsx,因此請手動檢查 CSV 的代碼欄:將兩個檔案中的該欄複製到同一工作表,並用 =EXACT(A2,B2) 比對兩欄。
  • CSV 傳回時會以逗號分隔。 無論來源使用何種分隔符號,翻譯後的 CSV 都會使用逗號;.tsv 檔案則保留定位字元。在我們的測試中,以分號分隔的 CSV 傳回時改以逗號分隔,而「4,50」這類小數逗號則保留在引號內。檔案為 UTF-8 且不含位元組順序標記。Microsoft 表示,Excel 通常可開啟帶有該標記的 UTF-8 CSV,否則建議透過「資料 > 取得資料 > 從文字/CSV」匯入(Microsoft Support)。若您雙擊檔案後看到亂碼重音字元,請改用該方式匯入。

若您的資料位於含有公式的活頁簿中,請翻譯 .xlsx。將資料匯出為 CSV 再翻譯,會捨棄所有公式。

常見問題

問題可能原因解決方式
整欄仍顯示「In stock」這些文字位於 IF 公式內將其移至標籤儲存格,並讓公式指向這些儲存格
下拉式選單拒絕翻譯後的值允許的值直接輸入在驗證規則中將規則的「來源」改為儲存格範圍,並翻譯該範圍
產品代碼被變更代碼含有字母,因此被送往翻譯從來源修正;每次交付時執行比對模式
有一個儲存格完全沒有被翻譯它含有混合格式,或者它是一個連結清除格式或編輯連結文字,然後重新翻譯或手動修正
圖表或巨集不見了用來重寫檔案的程式庫不會儲存它們翻譯 .xlsx 副本,並將翻譯後的文字移回原始檔案
雙語檔案中的總計是錯的它新增的欄位會移動值,但不會移動公式或格式使用翻譯後的工作簿進行任何計算
翻譯後的 CSV 中重音符號看起來是亂碼Excel 猜錯了編碼使用「資料 > 取得資料 > 從文字/CSV」匯入
上傳被拒絕檔案是 .xls,或者需要密碼才能開啟將其儲存為沒有開啟密碼的一般 .xlsx(僅工作表保護即可)

同樣的想法也適用於簡報:PowerPoint 簡報也會將文字保留在翻譯工具跳過的位置,而該文章的檢查工具與本文的運作方式相同。

相關文章