Cách bỏ dấu trong văn bản với Word, Excel và Google Sheets

Những cách thực tế để bỏ dấu cho tên và văn bản trong Word, Excel và Google Sheets, điểm yếu của từng cách và khi nào nên hoặc không nên bỏ dấu.

Trong bài này

Sớm muộn gì bạn cũng cần văn bản không dấu: danh sách khách hàng mà hệ thống cũ không nhập được, tên tệp phải là ASCII thuần, đường dẫn web, khoá tìm kiếm, hoặc tên phải khớp giữa các hệ thống. Word, Excel và Google Sheets không có lệnh "bỏ dấu" bấm một lần, nhưng có những cách đáng tin cậy. Bài này chỉ ra các cách đó và điểm yếu của từng cách.

Trước hết, bạn có nên bỏ dấu không

Bỏ dấu làm mất thông tin. Tiếng Việt chỉ riêng một âm tiết đã có thể mang hàng chục nghĩa tuỳ dấu thanh. Hãy bỏ dấu để so khớp, sắp xếp, đặt tên tệp và tạo đường dẫn, nhưng giữ bản gốc ở đâu đó. Đừng thay bản duy nhất của một cái tên bằng bản đã bỏ dấu.

Cách nhanh nhất: dán vào một công cụ

Với bất kỳ lượng văn bản nào, trong bất kỳ chương trình nào, cách nhanh nhất là sao chép, dán vào công cụ văn bản, chọn "Bỏ dấu" rồi dán kết quả trở lại. Công cụ chạy trong trình duyệt nên văn bản không bị tải lên, và nó xử lý được những chữ mà cách đơn giản bỏ sót như đ, ß, ø, ł. Phần còn lại của bài dành cho lúc bạn cần bước này nằm ngay trong tài liệu.

Word

Word không có lệnh bỏ dấu cho cả tài liệu. Bạn có thể làm thế này:

  1. Nhấn Ctrl+H (Cmd+Shift+H trên Mac) để mở Tìm và Thay thế.
  2. Gõ chữ có dấu vào "Find what" và chữ không dấu vào "Replace with", ví dụ é và e.
  3. Chọn "Replace All".
  4. Lặp lại cho từng chữ có dấu xuất hiện trong văn bản, cả chữ hoa, và bật "Match case" để É không bị đổi thành e thường.

Cách này ổn với vài chữ nhưng rất mệt với tiếng Việt, vốn có hàng chục chữ có dấu. Với tiếng Việt hãy dùng công cụ ở trên.

Excel

Excel cũng không có hàm dựng sẵn. Nếu bạn dùng Microsoft 365, công thức sau thay từng chữ có dấu ở ô A2 bằng chữ không dấu:

=LET(
  fromChars, "áàâäãåçéèêëíìîïñóòôöõúùûüýÿ",
  toChars, "aaaaaaceeeeiiiinooooouuuuyy",
  fromAll, fromChars & UPPER(fromChars),
  toAll, toChars & UPPER(toChars),
  REDUCE(A2, SEQUENCE(LEN(fromAll)),
    LAMBDA(txt, i, SUBSTITUTE(txt, MID(fromAll, i, 1), MID(toAll, i, 1))))
)

Hai chuỗi phải dài bằng nhau, mỗi chữ ở chuỗi đầu khớp với chữ thay thế ở chuỗi sau. SUBSTITUTE phân biệt hoa thường nên chữ hoa được thêm riêng. Với tiếng Việt (ă â ê ô ơ ư và năm dấu thanh) danh sách rất dài, nên dùng công cụ văn bản sẽ gọn hơn nhiều. Cách này cũng không đổi ß thành ss hay æ thành ae.

Google Sheets

Google Sheets không có hàm bỏ dấu, nhưng có hai lựa chọn tốt.

Cách 1, công thức REGEXREPLACE. Với vài chữ, nối các phép thay:

=REGEXREPLACE(REGEXREPLACE(REGEXREPLACE(A2, "[áàâäãå]", "a"), "[éèêë]", "e"), "[íìîï]", "i")

Kéo dài chuỗi với o, u, c, n và chữ hoa nếu cần.

Cách 2, hàm tự viết. Mở Tiện ích mở rộng, rồi Apps Script, và dán:

function REMOVE_ACCENTS(text) {
  return String(text)
    .normalize("NFD")
    .replace(/[̀-ͯ]/g, "")
    .replace(/đ/g, "d")
    .replace(/Đ/g, "D");
}

Lưu lại, quay về bảng tính và dùng =REMOVE_ACCENTS(A2). Bước đầu tách mỗi chữ có dấu thành chữ cơ bản và dấu rời, bước hai xoá các dấu rời, hai dòng cuối xử lý chữ đ của tiếng Việt, vốn là một chữ riêng và không tách được. Với tiếng Việt, cách này xử lý đầy đủ mọi dấu thanh và dấu mũ.

Vì sao cách này hoạt động: dấu được lưu thế nào

Trên máy tính, "é" có thể được lưu bằng một ký tự hoặc hai: chữ "e" kèm dấu sắc rời. Đổi văn bản sang dạng tách (gọi là NFD) sẽ tách dấu khỏi chữ, nên bỏ dấu chỉ là xoá các dấu rời. Một số chữ như đ, ø, ł và ß không cấu tạo từ chữ cộng dấu nên cần quy tắc thay riêng. Đó chính là lý do cách "chỉ xoá dấu" để sót một vài từ.

Danh sách kiểm tra nhanh

  • Giữ bản gốc.
  • Kiểm tra cả chữ hoa lẫn chữ thường.
  • Thử với những cái tên khó nhất trong dữ liệu của bạn.
  • Quyết định ß, æ, ø, đ, ł sẽ thành gì và áp dụng nhất quán.
  • Nhớ rằng các hệ chữ khác như Kirin, Hy Lạp, Ả Rập, Hindi hoạt động khác, việc bỏ dấu không áp dụng cho chúng.

Công cụ được nhắc trong bài

Về trang blog