Hầu hết người dùng Excel đều biết hàm LEFT để tách ký tự bên trái chuỗi văn bản. Ít ai biết rằng Excel còn có hàm LEFTB hoạt động theo cách khác hoàn toàn. Sự khác biệt nằm ở cách đếm: LEFT đếm theo ký tự, LEFTB đếm theo byte. Với dữ liệu tiếng Việt, tiếng Trung, tiếng Nhật, sự khác biệt này tạo ra kết quả hoàn toàn trái ngược.

Hàm LEFT đếm theo ký tự
Hàm LEFT trích xuất một số ký tự nhất định từ bên trái chuỗi văn bản. Cú pháp cơ bản là =LEFT(text, num_chars) trong đó text là chuỗi cần tách, num_chars là số ký tự cần lấy.
Ví dụ đơn giản:
=LEFT("Nguyễn Văn A", 7)trả về “Nguyễn “=LEFT("你好世界", 2)trả về “你好”=LEFT("Product-2024", 7)trả về “Product”
LEFT đếm mỗi ký tự là một đơn vị, bất kể ký tự đó chiếm bao nhiêu byte trong bộ nhớ. Ký tự tiếng Việt có dấu như “ế” hay ký tự tiếng Trung như “你” đều được đếm là một ký tự duy nhất.
Hàm này hoạt động nhất quán trên mọi phiên bản Excel từ 2007 trở đi. Kết quả không phụ thuộc vào cài đặt ngôn ngữ của hệ thống. File Excel chứa công thức LEFT mở trên máy tính bất kỳ đều cho kết quả giống nhau.
Hàm LEFTB đếm theo byte
LEFTB được thiết kế riêng cho các ngôn ngữ sử dụng bộ ký tự hai byte. Cú pháp là =LEFTB(text, num_bytes) với num_bytes chỉ định số byte cần trích xuất thay vì số ký tự.
Sự khác biệt quan trọng:
- Ký tự ASCII thông thường chiếm 1 byte (a-z, 0-9, dấu chấm, gạch ngang)
- Ký tự DBCS chiếm 2 bytes (tiếng Trung, Nhật, Hàn, tiếng Việt có dấu)
=LEFTB("你好", 2)chỉ trả về “你” (một ký tự = 2 bytes)=LEFTB("你好", 4)trả về “你好” (hai ký tự = 4 bytes)
LEFTB chỉ hoạt động đúng khi bạn đã cài đặt ngôn ngữ DBCS làm ngôn ngữ chỉnh sửa mặc định trong Windows và Office. Nếu không, LEFTB sẽ hoạt động giống hệt LEFT, đếm mỗi ký tự là 1 byte.
Các ngôn ngữ hỗ trợ DBCS bao gồm tiếng Trung Giản thể, tiếng Trung Phồn thể, tiếng Hàn, tiếng Nhật, và một số ngôn ngữ Đông Nam Á. Tiếng Việt có dấu cũng thuộc nhóm này khi sử dụng bảng mã Unicode.
Khi nào LEFT hoạt động tốt hơn
Trong đa số trường hợp làm việc với dữ liệu tiếng Việt hoặc tiếng Anh, LEFT là lựa chọn đúng đắn. Hàm này đơn giản, dễ hiểu, và cho kết quả dự đoán được.
Tình huống phù hợp với LEFT:
Tách mã sản phẩm từ chuỗi có định dạng cố định. Nếu mã sản phẩm luôn là 5 ký tự đầu tiên như “SP001-Laptop Dell”, công thức =LEFT(A2,5) luôn trả về “SP001” chính xác.
Lấy tên tỉnh từ địa chỉ theo format chuẩn. Với chuỗi “Hà Nội – Quận Ba Đình”, công thức =LEFT(A2,6) cho “Hà Nội”. Số ký tự cố định nên LEFT hoạt động ổn định.
Trích xuất năm từ mã ngày tháng dạng văn bản “2024-10-15”. Công thức =LEFT(A2,4) lấy được “2024” ngay lập tức. Không cần quan tâm dữ liệu có ký tự đặc biệt hay không.
Tách họ từ cột họ và tên khi họ có độ dài biết trước. Nếu dữ liệu tuân theo quy tắc “Nguyễn” là 7 ký tự, “Trần” là 4 ký tự, bạn có thể xây dựng công thức điều kiện với LEFT.
LEFT không yêu cầu cài đặt ngôn ngữ đặc biệt. File Excel dùng LEFT mở được ở bất kỳ máy nào mà không lo kết quả sai lệch. Đây là lợi thế lớn khi chia sẻ file với đồng nghiệp hoặc khách hàng.
Khi nào cần dùng LEFTB
LEFTB trở nên cần thiết khi làm việc với dữ liệu từ hệ thống legacy sử dụng bộ mã ký tự cố định theo byte. Một số cơ sở dữ liệu cũ, đặc biệt là hệ thống Nhật Bản hoặc Trung Quốc từ những năm 1990-2000, lưu trữ văn bản với độ dài cố định tính theo byte.
Ví dụ thực tế từ kinh nghiệm:
Hệ thống kế toán cũ của công ty Nhật xuất file CSV với trường tên khách hàng giới hạn 20 bytes. Tên “山田太郎” (Yamada Taro) chiếm 8 ký tự nhưng 16 bytes. Nếu dùng =LEFT(A2,10) để lấy 10 ký tự, có thể vượt quá 20 bytes cho phép. Dùng =LEFTB(A2,20) đảm bảo không vượt giới hạn byte của hệ thống.
File văn bản từ mainframe IBM sử dụng EBCDIC encoding. Khi import vào Excel, một số ký tự đặc biệt có thể chiếm số byte khác với số ký tự hiển thị. LEFTB giúp trích xuất chính xác số byte như hệ thống cũ định nghĩa.
Chuẩn hóa dữ liệu để upload lên API có giới hạn byte nghiêm ngặt. Một số API của ngân hàng hoặc hệ thống chính phủ giới hạn trường dữ liệu theo byte chứ không theo ký tự. Với trường địa chỉ giới hạn 100 bytes, dùng LEFTB đảm bảo không bị reject.
Migration dữ liệu giữa các hệ thống database khác nhau. Khi chuyển từ SQL Server sang Oracle với các trường VARCHAR2 được định nghĩa theo byte, LEFTB giúp cắt dữ liệu đúng độ dài yêu cầu.
Cài đặt để LEFTB hoạt động đúng
LEFTB chỉ phân biệt byte và ký tự khi hệ thống được cấu hình ngôn ngữ DBCS. Nếu không, nó hoạt động giống hệt LEFT.
Cách kích hoạt DBCS trong Windows:
Mở Control Panel, chọn Clock and Region, sau đó Region and Language. Chuyển sang tab Administrative, click Change system locale. Chọn ngôn ngữ DBCS như Chinese (Simplified, PRC) hoặc Japanese (Japan). Khởi động lại máy tính để thay đổi có hiệu lực.
Cài đặt ngôn ngữ trong Office:
Mở Excel, vào File, chọn Options, sau đó Language. Trong phần Choose Editing Languages, click Add a Language. Chọn Chinese (Simplified) hoặc ngôn ngữ DBCS khác. Set ngôn ngữ vừa thêm làm default bằng nút Set as Default. Đóng và mở lại Excel.
Sau khi cài đặt xong, hàm LEFTB sẽ đếm ký tự DBCS là 2 bytes mỗi ký tự. Ký tự ASCII vẫn được đếm là 1 byte. Bạn có thể kiểm tra bằng công thức =LENB("你好") sẽ trả về 4 thay vì 2.
Lưu ý rằng việc thay đổi system locale có thể ảnh hưởng đến các ứng dụng khác trên máy tính. Một số phần mềm cũ có thể hiển thị ký tự lỗi sau khi đổi locale. Cân nhắc thử nghiệm trên máy ảo trước khi áp dụng trên máy làm việc chính.
So sánh kết quả thực tế
Để thấy rõ sự khác biệt, giả sử bạn có chuỗi “你好世界” (Xin chào thế giới bằng tiếng Trung) trong ô A1.
Với hệ thống DBCS được kích hoạt:
=LEFT(A1,2)trả về “你好” (2 ký tự)=LEFTB(A1,2)trả về “你” (1 ký tự = 2 bytes)=LEFTB(A1,4)trả về “你好” (2 ký tự = 4 bytes)=LEN(A1)trả về 4 (đếm ký tự)=LENB(A1)trả về 8 (đếm bytes)
Với hệ thống không có DBCS:
=LEFT(A1,2)trả về “你好” (2 ký tự)=LEFTB(A1,2)cũng trả về “你好” (hoạt động như LEFT)=LEFTB(A1,4)trả về “你好世界” (4 ký tự)=LENB(A1)trả về 4 (giống LEN)
Với dữ liệu tiếng Việt có dấu như “Việt Nam”, kết quả tương tự nếu DBCS được bật. Mỗi ký tự có dấu như “ệ” hoặc “ă” chiếm 2 bytes.
Các hàm byte tương tự khác
Excel còn có nhóm hàm byte khác hoạt động tương tự LEFTB, dành riêng cho xử lý dữ liệu DBCS.
RIGHTB trích xuất số byte từ bên phải chuỗi. Cú pháp =RIGHTB(text, num_bytes) hoạt động ngược lại với LEFTB. Hữu ích khi cần lấy phần đuôi file hoặc mã vùng từ chuỗi.
MIDB trích xuất số byte từ vị trí bất kỳ trong chuỗi. Công thức =MIDB(text, start_num, num_bytes) cho phép chỉ định vị trí bắt đầu theo byte. Thay thế cho hàm MID khi làm việc với dữ liệu DBCS.
LENB trả về độ dài chuỗi tính theo byte thay vì ký tự. Công thức =LENB(text) thường được dùng kết hợp với LEFTB hoặc RIGHTB để tính toán vị trí cắt động.
FINDB và SEARCHB tìm vị trí của chuỗi con theo byte. Tương tự FIND và SEARCH nhưng trả về vị trí byte thay vì vị trí ký tự. Hữu ích khi kết hợp với MIDB.
REPLACEB thay thế một đoạn văn bản dựa trên vị trí và số byte. Cú pháp phức tạp hơn các hàm khác nhưng mạnh mẽ khi cần chỉnh sửa chính xác dữ liệu DBCS.
Tất cả các hàm này chỉ hoạt động đúng khi ngôn ngữ DBCS được cài đặt. Nếu không, chúng hoạt động giống hệt phiên bản không có B (LEFT, RIGHT, MID, LEN, FIND, SEARCH, REPLACE).
Lỗi thường gặp với LEFTB
Lỗi phổ biến nhất là kỳ vọng LEFTB hoạt động khác LEFT mà không cài đặt DBCS. Nhiều người dùng nghĩ chỉ cần viết LEFTB thay vì LEFT là Excel sẽ tự động nhận diện ký tự hai byte. Thực tế, nếu system locale không phải DBCS, LEFTB đếm giống hệt LEFT.
Cắt ký tự DBCS không trọn vẹn:
Nếu bạn chỉ định số byte lẻ với ký tự hai byte, Excel có thể trả về kết quả lỗi. Ví dụ =LEFTB("你好",3) yêu cầu 3 bytes, nhưng mỗi ký tự chiếm 2 bytes. Excel có thể trả về ký tự đầu tiên cộng với một byte lỗi, hoặc chỉ ký tự đầu tiên.
Kết hợp LEFTB với hàm không tương thích:
Dùng =LEFTB(A1, SEARCH(" ", A1)) có thể cho kết quả sai vì SEARCH trả về vị trí ký tự chứ không phải byte. Phải dùng =LEFTB(A1, SEARCHB(" ", A1)) để đồng bộ đơn vị đo.
File Excel được mở trên máy khác:
File sử dụng LEFTB được tạo trên máy có DBCS, khi mở trên máy không có DBCS sẽ cho kết quả khác. Dẫn đến dữ liệu bị lỗi khi chia sẻ file. Đây là lý do chính khiến nhiều tổ chức tránh dùng LEFTB.
Khuyến nghị sử dụng
Theo tài liệu chính thức của Microsoft, hàm LEFTB đã bị deprecated. LEFT hiện nay hỗ trợ Unicode surrogates qua Compatibility Version 2, nghĩa là LEFT có thể xử lý hầu hết trường hợp mà trước đây cần LEFTB.
Lựa chọn an toàn:
Với dữ liệu mới, ưu tiên dùng LEFT thay vì LEFTB. Hàm LEFT tương thích tốt hơn, dễ maintain hơn, và cho kết quả nhất quán trên mọi môi trường. Chỉ dùng LEFTB khi bắt buộc phải giới hạn theo byte cho legacy systems.
Nếu đang làm việc với hệ thống cũ yêu cầu LEFTB, document rõ ràng yêu cầu DBCS setting trong file README hoặc documentation. Điều này giúp người khác hiểu tại sao file hoạt động khác thường.
Khi migration từ hệ thống cũ sang mới, cân nhắc chuyển đổi tất cả công thức LEFTB sang LEFT sau khi verify kỹ lưỡng. Hầu hết trường hợp, LEFT cho kết quả tốt hơn và dễ maintain trong dài hạn.
Tương lai của hàm byte
Microsoft đã ngừng khuyến khích sử dụng các hàm byte từ Office 2013. Excel hiện đại xử lý Unicode tốt hơn nhiều so với các phiên bản cũ. Hầu hết tình huống trước đây cần LEFTB giờ đây LEFT xử lý được nhờ cải tiến Unicode support.
Trong Excel 365 và các phiên bản cloud, các hàm byte vẫn hoạt động để đảm bảo backward compatibility. Tuy nhiên, các tính năng mới như Dynamic Arrays, XLOOKUP, hoặc TEXTSPLIT không có phiên bản byte riêng.
Nếu bạn đang bắt đầu dự án Excel mới, tránh dùng LEFTB trừ khi có lý do kỹ thuật rất cụ thể. Đầu tư thời gian học LEFT cùng các hàm hiện đại khác như TEXTSPLIT hoặc TEXTBEFORE sẽ có giá trị lâu dài hơn.
Với file cũ đang dùng LEFTB, không cần thiết phải refactor ngay lập tức. Nhưng khi có dịp cập nhật hoặc sửa bug, cân nhắc thay LEFTB bằng LEFT để file dễ maintain và chia sẻ hơn trong tương lai.
