Cách dịch bảng tính Excel mà không làm hỏng công thức hoặc danh sách thả xuống
Tìm văn bản mà công cụ dịch từng ô bỏ qua trong tệp .xlsx (văn bản trong công thức, văn bản định dạng phong phú, liên kết, biểu đồ, macro), sửa danh sách thả xuống và mã mà nó có thể làm hỏng, rồi kiểm tra kết quả bằng một script miễn phí và một bảng tính thử nghiệm.

Để dịch toàn bộ sổ làm việc Excel, hãy tải tệp .xlsx lên công cụ dịch tài liệu thay vì dịch từng ô một. Lệnh Review > Translate của chính Excel chỉ hoạt động trên văn bản bạn chọn (Microsoft Support), cách này ổn với một nhãn nhưng chậm với một bảng giá. Công cụ dịch tệp sẽ đọc mọi ô văn bản, dịch và ghi lại vào đúng địa chỉ đó, nhờ vậy công thức, số và ngày tháng vẫn giữ nguyên vị trí.
Điều mà công cụ không cho bạn biết là những văn bản nào nó chưa từng đọc. Văn bản gõ bên trong công thức, ô có một từ in đậm, liên kết, ghi chú, tiêu đề biểu đồ: khi dịch từng ô, tất cả những thứ này có thể vẫn ở ngôn ngữ gốc. Và hai thứ có thể bị hỏng: danh sách thả xuống có các giá trị cho phép không được dịch, và mã sản phẩm lại bị dịch.
Chúng tôi đã tạo một sổ làm việc thử nghiệm hai trang với văn bản ở từng vị trí đó, viết một công cụ kiểm tra miễn phí liệt kê văn bản nằm ở đâu, và chạy sổ làm việc qua một bản mô phỏng cục bộ cách xử lý bảng tính mà BookTranslator sử dụng. Hướng dẫn này cho thấy những gì trả về, cần thay đổi gì trước khi tải lên, và cách kiểm tra tệp đã dịch.
Trả lời nhanh: Những gì được dịch trong một sổ làm việc
| Vị trí văn bản | Ví dụ từ thử nghiệm của chúng tôi | Được BookTranslator dịch? | Cần làm gì |
|---|---|---|---|
| Ô văn bản thuần, kể cả hàng tiêu đề | "Blue notebook", "Price" | Có | Không cần làm gì |
| Số, ngày tháng, boolean | 4.5, 2026-10-30 | Giữ nguyên như cũ | Kiểm tra định dạng số cho thị trường đích |
| Công thức | =C2*D2 | Giữ nguyên như cũ | Không cần làm gì |
| Văn bản bên trong công thức | =IF(D2>5,"In stock","Low stock") | Không | Chuyển các từ vào ô (xem Bước 2) |
| Ô có định dạng hỗn hợp | "Ấn bản giới hạn" | Không, toàn bộ ô bị bỏ qua | Xóa định dạng trước, hoặc dịch thủ công |
| Ô chứa siêu liên kết | "Trang sản phẩm" | Không | Chỉnh sửa văn bản liên kết sau khi dịch |
| Giá trị trong ô danh sách thả xuống | "Văn phòng phẩm" | Có, nhưng danh sách thả xuống thì không | Sửa danh sách, nếu không ô sẽ không còn hợp lệ |
| Mã có chữ cái | "A-77", "B-09" | Được gửi đến trình dịch | Kiểm tra chúng sau khi dịch |
| Mã chỉ có chữ số hoặc ký hiệu | "00123" | Giữ nguyên như cũ | Không có gì |
| Ghi chú và nhận xét | "Kiểm tra tên nhà cung cấp trước khi phát hành" | Không | Dịch thủ công, hoặc xóa chúng |
| Tên trang tính và phạm vi được đặt tên | "Sản phẩm", PriceRange | Không, để các công thức liên trang vẫn hoạt động | Chỉ đổi tên trang bằng tay nếu thực sự cần, sau khi đã kiểm tra công thức |
| Biểu đồ và macro | Một biểu đồ cột, một dự án VBA | Đã bị xóa khỏi tệp dịch trong thử nghiệm của chúng tôi | Giữ bản gốc, xây dựng lại sau (xem bên dưới) |
Tệp .xls cũ không được chấp nhận. Hãy mở chúng trong Excel và lưu thành .xlsx trước. Tệp .xlsm có hỗ trợ macro được chấp nhận, nhưng hãy đọc phần macro trước khi tải lên: tệp dịch không có macro, và nếu tệp tải xuống vẫn có đuôi .xlsm, hãy đổi tên thành .xlsx trước khi mở.
Bước 1: Chạy công cụ kiểm tra trên sổ làm việc của bạn
Tải xuống check_xlsx_text.py và chạy nó trên tệp của bạn:
python3 check_xlsx_text.py "Price list.xlsx"
Công cụ chỉ cần Python 3 và đọc tệp mà không thay đổi nó. Dưới đây là bản tóm tắt cho sổ làm việc mẫu của chúng tôi:
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
Bên dưới số lượng, công cụ liệt kê từng mục cùng trang tính và ô của nó, chẳng hạn như Products!E2 formula text 'In stock'. Hãy dùng danh sách đó làm danh sách việc cần làm cho Bước 2. Nếu sổ làm việc của bạn có biểu đồ, hộp văn bản, bảng tổng hợp hoặc dự án macro, chúng cũng sẽ xuất hiện trong số lượng.
README mô tả sổ làm việc mẫu, liệt kê mã băm tệp và liên kết đến các tập lệnh tạo ra nó, để bạn có thể lặp lại thử nghiệm.
Điều gì đã xảy ra với sổ làm việc thử nghiệm của chúng tôi
Chúng tôi đã chạy sổ làm việc mẫu qua mã mà trình xử lý bảng tính của BookTranslator sử dụng, được tái tạo cục bộ vào ngày 2026-11-01 với cùng thư viện (ExcelJS 4.4.0). Thay vì bản dịch thực, chúng tôi dùng một trình giữ chỗ thêm "[DE]" vào trước văn bản của mỗi ô. Điều này giữ mô hình ngôn ngữ ra khỏi thử nghiệm, để kết quả chỉ cho thấy những gì việc xử lý tệp gửi đi, giữ lại và loại bỏ.
Trình xử lý đọc từng ô của mỗi trang tính. Nó chỉ gửi một ô để dịch nếu ô đó chứa giá trị văn bản thuần túy, và bỏ qua mọi văn bản chỉ gồm chữ số, dấu câu và ký hiệu. Mọi thứ khác trong lưới ô được sao chép nguyên vẹn. BookTranslator sau đó trả về hai tệp: một sổ làm việc đã dịch và một sổ làm việc song ngữ.
Sổ làm việc đã dịch
Đây là tệp để sử dụng. Tất cả 6 công thức, 7 số và ngày, định dạng tiền tệ và ngày, các ô đã hợp nhất, ghi chú, quy tắc danh sách thả xuống và phạm vi được đặt tên đều trở về không thay đổi. 9 ô tiêu đề và các ô văn bản thuần túy khác đã được dịch tại chỗ. Ba kết quả cần lưu ý:
Văn bản bên trong công thức vẫn ở ngôn ngữ nguồn. Cột Trạng thái đã dùng =IF(D2>5,"In stock","Low stock"). Công thức không phải là ô văn bản, nên trình xử lý không bao giờ đọc nó, và "In stock" vẫn bằng tiếng Anh trong mọi hàng. Điều tương tự cũng áp dụng cho văn bản được nối bằng & hoặc CONCAT, và cho văn bản bên trong HYPERLINK.
Giá trị danh sách thả xuống đã dịch không còn khớp với danh sách của nó. Ô H2 có một danh sách thả xuống cho phép "Stationery, Office, Art". Giá trị của ô đã được dịch, nhưng danh sách được lưu trong quy tắc xác thực, không phải trong ô, nên nó không được dịch. Chế độ so sánh của công cụ kiểm tra đã báo cáo như sau:
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 giữ một giá trị vi phạm quy tắc xác thực của nó, nhưng người tiếp theo mở danh sách thả xuống chỉ thấy các lựa chọn cũ, và Data > Circle Invalid Data sẽ đánh dấu ô đó.
Mã có chữ cái được gửi đến trình dịch. "00123" đã bị bỏ qua vì nó chỉ chứa chữ số. "A-77" và "B-09" đã được gửi, vì chúng chứa một chữ cái. Việc một mã có trở về không thay đổi hay không sau đó phụ thuộc vào mô hình; không có gì trong việc xử lý tệp bảo vệ nó. Một SKU trở về dưới dạng "A-77-Artikel" sẽ phá vỡ mọi tra cứu sử dụng nó.
Sổ làm việc song ngữ
Tệp song ngữ chèn một cột dịch vào bên phải mỗi cột có ít nhất một ô đã dịch, với tiêu đề như "Name (Translated)". Nó di chuyển giá trị ô đến cột mới của chúng, nhưng không di chuyển định dạng ô hoặc cập nhật công thức. Trong thử nghiệm của chúng tôi:
- định dạng giá
$#,##0.00vẫn ở cột C, nơi hiện chứa tên sản phẩm, trong khi giá đã chuyển sang cột E mà không có định dạng đó; - định dạng ngày vẫn ở cột G, nơi giờ chứa số lượng, nên số lượng 10 hiển thị dưới dạng ngày;
=C2*D2đã chuyển sang cột K nhưng vẫn trỏ đến C2 và D2, nơi giờ chứa tên sản phẩm và bản dịch của nó, nên không thể trả về 45 nữa;- trên trang tính Summary,
=SUM(Products!F2:F4)giờ đã cộng một cột bản dịch trống.
Vì vậy, sổ làm việc song ngữ dùng để đọc bản gốc và bản dịch cạnh nhau, không phải để tính toán. Đừng chỉnh sửa nó hoặc sao chép công thức ra khỏi nó.
Biểu đồ và macro
Trong một bản sao riêng của sổ làm việc, chúng tôi đã thêm một biểu đồ và một dự án macro, được lưu theo cách Excel lưu chúng. Cả hai đều không có trong tệp đã dịch hoặc tệp song ngữ. ExcelJS đọc và ghi các trang tính, kiểu dáng, văn bản chia sẻ, hình ảnh, bảng và nhận xét, và không có mã cho các phần biểu đồ hoặc dự án VBA, vì vậy nó bỏ qua chúng khi lưu. Cùng đoạn mã đó cũng không có gì cho bảng tổng hợp, nên hãy dự kiến bảng tổng hợp cũng sẽ bị loại bỏ, mặc dù chúng tôi chưa thử nghiệm một bảng nào. Trình xử lý cũng lưu đầu ra dưới dạng tệp .xlsx, không thể chứa macro.
Một hạn chế nữa của thử nghiệm: chúng tôi đã xây dựng sổ làm việc mẫu bằng chính ExcelJS, đây là trường hợp thuận lợi nhất để giữ định dạng, hợp nhất và quy tắc xác thực. Một sổ làm việc được lưu bởi Excel có thể chứa các tính năng mà ExcelJS không mô hình hóa, vì vậy hãy chạy bước so sánh bên dưới trên tệp của riêng bạn thay vì giả định kết quả sạch sẽ tương tự.
Bước 2: Chuẩn bị sổ làm việc trước khi tải lên
Làm việc trên một bản sao. Công cụ kiểm tra cho bạn biết ô nào cần thay đổi.
- Chuyển văn bản công thức vào ô. Đặt các từ vào một trang tính "Labels" nhỏ và trỏ công thức đến chúng:
=IF(D2>5,Labels!$A$1,Labels!$A$2). Các ô nhãn là văn bản thuần túy, vì vậy chúng được dịch, và mọi công thức sẽ nhận bản dịch. Thay đổi này thường khắc phục hầu hết số lượng "văn bản công thức", vì cùng một cụm từ có xu hướng lặp lại trong toàn bộ cột. - Chuyển danh sách thả xuống vào ô. Trong Data > Data Validation, thay đổi Nguồn từ danh sách được nhập (
Stationery,Office,Art) thành một phạm vi trên trang tính Labels (=Labels!$B$1:$B$3). Các giá trị danh sách sau đó được dịch cùng với các ô sử dụng chúng. Kiểm tra một vài ô sau đó: danh sách thả xuống chỉ chấp nhận giá trị đã dịch nếu mô hình dịch "Stationery" theo cùng một cách ở cả hai nơi. - Xóa định dạng hỗn hợp. Một ô có một từ in đậm hoặc có màu được lưu dưới dạng các đoạn văn bản có định dạng và bị bỏ qua hoàn toàn. Chọn ô và chọn Home > Clear > Clear Formats, hoặc nhập lại, sau đó áp dụng lại in đậm sau khi dịch. Nếu bạn có nhiều ô như vậy, hãy ghi chú chúng trước.
- Quyết định xử lý ghi chú và nhận xét. Chúng không được dịch. Xóa các ghi chú đánh giá mà bạn không muốn gửi đến dịch vụ dịch, và dịch phần còn lại bằng tay.
- Lưu sổ làm việc macro dưới dạng
.xlsx. Giữ tệp.xlsmcủa bạn làm bản gốc. Dịch một bản sao.xlsx, sau đó sao chép các cột văn bản đã dịch trở lại bản gốc (Paste Special > Values, chỉ các cột văn bản, để bạn không ghi đè công thức) hoặc xuất các mô-đun VBA và nhập chúng vào tệp đã dịch. - Để biểu đồ lại sau. Một biểu đồ có ít văn bản: tiêu đề, tiêu đề trục và chú giải thường đến từ các ô tiêu đề. Thường nhanh hơn là xây dựng lại biểu đồ trong sổ làm việc đã dịch từ cùng các phạm vi, hoặc dán các cột văn bản đã dịch trở lại sổ làm việc gốc để biểu đồ và bảng tổng hợp của nó tự cập nhật.
Bước 3: Dịch toàn bộ tệp
Tải lên tệp .xlsx trên trang dịch tài liệu, chọn ngôn ngữ đích và kiểm tra giá hiển thị trước khi thanh toán. Tải lên toàn bộ tệp sẽ dịch mọi ô văn bản trên mọi trang tính trong một tác vụ, giúp giữ nguyên tên sản phẩm ở hàng 3 và hàng 3.000 dễ dàng hơn. Hướng dẫn của chúng tôi về xây dựng bảng thuật ngữ dịch giải thích cách xác định các thuật ngữ không được thay đổi.
Khi tác vụ hoàn tất, trang Lịch sử cung cấp cả hai bản tải xuống. Sử dụng sổ làm việc đã dịch. Chỉ mở sổ làm việc song ngữ để xem lại từ ngữ với người đọc được cả hai ngôn ngữ.
Nếu bạn làm việc trong Google Sheets, có hai cách khác. Tab Documents của Google Translate chấp nhận tệp .xlsx lên đến 10 MB (Google Translate Help); hướng dẫn dịch Google Docs của chúng tôi so sánh các tùy chọn của nó. Và Sheets có hàm GOOGLETRANSLATE(text, source_language, target_language) (Google Docs Editors Help) mà bạn có thể điền xuống một cột mới bên cạnh nguồn. Điều đó thuận tiện cho một cột nhãn ngắn, nhưng kết quả là công thức, vì vậy hãy dán chúng dưới dạng giá trị trước khi chia sẻ trang tính. DeepL cũng dịch tài liệu; xem giới hạn tài liệu của nó có ý nghĩa gì trong thực tế. Dù bạn sử dụng công cụ nào, hãy chạy công cụ kiểm tra trên nguồn trước: văn bản bên trong công thức, liên kết và biểu đồ nằm ở cùng vị trí bất kể công cụ nào đọc tệp.
Bước 4: Kiểm tra sổ làm việc đã dịch
-
Chạy chế độ so sánh. Đặt tệp nguồn và tệp đã dịch cạnh nhau:
python3 check_xlsx_text.py --compare "Price list.xlsx" "Price list (translated).xlsx"Nó kiểm tra rằng mọi công thức, số và ngày không thay đổi, rằng các mã có chữ cái được trả về chính xác như ban đầu, và rằng mọi giá trị thả xuống đều nằm trong danh sách của nó. Chỉ sử dụng nó trên sổ làm việc đã dịch. Vì tệp song ngữ dịch chuyển các cột, gần như mọi ô sẽ bị báo cáo.
-
Tính toán lại. Nếu một công thức vẫn hiển thị văn bản cũ sau khi bạn sửa nhãn, hãy nhấn F9 (hoặc Formulas > Calculate Now).
-
Dịch phần còn lại. Sử dụng danh sách của công cụ kiểm tra từ Bước 1: văn bản liên kết, ghi chú, tiêu đề biểu đồ và bất kỳ ô nào bạn đã xóa định dạng.
-
Tìm văn bản bị cắt. Bản dịch thường dài hơn bản gốc, và các chuỗi ngắn tăng nhiều nhất. W3C trích dẫn hướng dẫn của IBM cho rằng mức độ mở rộng trung bình từ tiếng Anh sang các ngôn ngữ châu Âu là 200–300% đối với văn bản dài tối đa 10 ký tự (W3C). Tiêu đề cột thường ngắn, vì vậy hãy mở rộng cột hoặc bật Tính năng Ngắt dòng Văn bản ở những chỗ bị cắt.
-
Kiểm tra hiển thị số và ngày. Các giá trị không bị thay đổi, nhưng "4.50" có thể cần hiển thị là "4,50" đối với người đọc tiếng Đức. Đó là định dạng ô hoặc cài đặt khu vực, không phải bản dịch.
-
Đừng "sửa" tên hàm. Nếu Excel tiếng Pháp của đồng nghiệp hiển thị
SOMMEthay vìSUM, đó là Excel hiển thị tên hàm bản địa hóa của chính nó; công thức vẫn giữ nguyên. -
Thiết lập trang tính từ phải sang trái. Đối với tiếng Ả Rập, tiếng Do Thái, tiếng Ba Tư hoặc tiếng Urdu, hãy bật Bố cục Trang > Trang tính từ Phải sang Trái và kiểm tra căn chỉnh ô.
-
Nhờ một người đọc thành thạo xem lại nếu tài liệu được gửi đến khách hàng, chẳng hạn như bảng giá hoặc danh mục sản phẩm. Bản dịch máy là bản nháp đầu tiên tốt, không phải bản cuối cùng.
Tệp CSV và TSV
Tệp .csv không có công thức, định dạng hoặc danh sách thả xuống, vì vậy hầu hết các vấn đề trên đều biến mất. Có ba điểm khác biệt:
- Hàng tiêu đề không được dịch. Trình xử lý coi hàng đầu tiên là tiêu đề và chỉ dịch các hàng dữ liệu. Hãy dịch tiêu đề bằng tay, hoặc sao chép chúng vào một hàng dữ liệu trước khi tải lên rồi chuyển lại sau.
- Một cột được dịch toàn bộ. Nếu bất kỳ ô nào trong cột có chữ cái, mọi ô trong cột đó có chữ cái đều được gửi đi, kể cả mã. Chế độ so sánh chỉ đọc
.xlsx, vì vậy hãy kiểm tra cột mã CSV bằng tay: sao chép nó từ cả hai tệp vào một trang tính và so sánh hai cột bằng=EXACT(A2,B2). - CSV trả về được phân tách bằng dấu phẩy. Bất kể dấu phân cách nguồn là gì, CSV đã dịch đều dùng dấu phẩy; tệp
.tsvgiữ nguyên tab. Trong thử nghiệm của chúng tôi, một CSV phân tách bằng dấu chấm phẩy trả về được phân tách bằng dấu phẩy, với dấu phẩy thập phân như "4,50" được giữ trong dấu ngoặc kép. Tệp là UTF-8 không có dấu thứ tự byte. Microsoft cho biết Excel mở CSV UTF-8 bình thường khi có dấu đó, nếu không thì khuyến nghị nhập bằng Dữ liệu > Lấy Dữ liệu > Từ Văn bản/CSV (Hỗ trợ Microsoft). Nếu bạn nhấp đúp vào tệp và thấy dấu bị lỗi, hãy nhập theo cách đó thay thế.
Nếu dữ liệu của bạn nằm trong sổ làm việc có công thức, hãy dịch tệp .xlsx. Xuất sang CSV để dịch sẽ làm mất mọi công thức.
Các vấn đề thường gặp
| Vấn đề | Nguyên nhân có thể | Cách khắc phục |
|---|---|---|
| Cả một cột vẫn hiển thị "In stock" | Các từ nằm trong công thức IF | Chuyển chúng sang ô nhãn và trỏ công thức đến đó |
| Danh sách thả xuống từ chối giá trị đã dịch | Các giá trị được phép được nhập trực tiếp vào quy tắc xác thực | Thay đổi Nguồn của quy tắc thành một phạm vi ô và dịch phạm vi đó |
| Một mã sản phẩm đã thay đổi | Nó chứa chữ cái nên đã được gửi đến trình dịch | Sửa nó từ nguồn; chạy chế độ so sánh trên mỗi lần giao hàng |
| Một ô hoàn toàn không được dịch | Ô đó có định dạng hỗn hợp hoặc là một liên kết | Xóa định dạng hoặc chỉnh sửa văn bản liên kết, sau đó dịch lại hoặc sửa thủ công |
| Biểu đồ hoặc macro bị mất | Thư viện dùng để ghi lại tệp không lưu chúng | Dịch một bản sao .xlsx và chuyển văn bản đã dịch trở lại tệp gốc |
| Tổng số bị sai trong tệp song ngữ | Các cột được thêm vào làm lệch giá trị nhưng không làm lệch công thức hay định dạng | Sử dụng sổ làm việc đã dịch cho mọi phép tính |
| Dấu phụ bị lỗi trong tệp CSV đã dịch | Excel đã đoán sai bảng mã | Nhập tệp bằng Data > Get Data > From Text/CSV |
| Tệp tải lên bị từ chối | Tệp là .xls hoặc cần mật khẩu để mở | Lưu tệp dưới dạng .xlsx thông thường không có mật khẩu mở (chỉ bảo vệ trang tính thì không sao) |
Ý tưởng tương tự cũng áp dụng cho slide: một bộ bài thuyết trình PowerPoint cũng giữ văn bản ở những vị trí mà người dịch bỏ qua, và công cụ kiểm tra cho bài viết đó hoạt động giống như công cụ này.
Bài viết liên quan





