Chào mọi người, dạo này mình hay phải copy dữ liệu từ các trang web về Excel để làm báo cáo. Tuy nhiên, có một vấn đề mình gặp phải khá thường xuyên là sau khi copy về, các chuỗi ký tự đôi khi bị dính thêm những ký tự 'lạ' mà mắt thường không thấy được, làm ảnh hưởng đến việc tính toán hoặc lọc dữ liệu.
Ví dụ, mình copy một danh sách tên sản phẩm, nhìn trên web thì thấy bình thường, nhưng khi paste vào Excel thì có những ký tự 'trông như dấu cách' nhưng lại không phải là dấu cách, hoặc những ký tự không in được. Khi dùng các hàm như VLOOKUP hay SUMIFS thì báo lỗi hoặc trả về kết quả sai.
Sau một hồi loay hoay, mình tìm ra được một cách khá hiệu quả để xử lý vấn đề này mà không cần dùng đến VBA phức tạp. Đó là sử dụng kết hợp hàm CLEAN và SUBSTITUTE.
Cách làm như sau:
- Tạo một cột phụ bên cạnh cột chứa dữ liệu bị lỗi.
- Tại ô đầu tiên của cột phụ, nhập công thức:
=CLEAN(A1)(giả sử dữ liệu lỗi nằm ở cột A, bắt đầu từ A1). HàmCLEANsẽ loại bỏ 32 ký tự điều khiển không in được. - Tiếp theo, bạn cần xử lý các ký tự 'trông như dấu cách' nhưng không phải. Bạn có thể dùng hàm
SUBSTITUTE. Tuy nhiên, để xác định ký tự 'lạ' đó là gì thì hơi khó. Một cách khác là bạn có thể thử dùng hàmTRIMsau hàmCLEANđể loại bỏ các khoảng trắng thừa. Công thức đầy đủ sẽ là:=TRIM(CLEAN(A1)). - Nếu vẫn còn ký tự lạ, bạn có thể thử xác định ký tự đó bằng cách dùng hàm
CODEđể xem mã ASCII của nó và dùngSUBSTITUTEđể thay thế. Ví dụ, nếu bạn xác định được ký tự lạ có mã ASCII là 160 (thường gặp khi copy từ web), bạn có thể dùng:=SUBSTITUTE(TRIM(CLEAN(A1)), CHAR(160), " "). - Sau khi áp dụng công thức cho tất cả các dòng, bạn tiến hành Copy cột phụ này, sau đó Paste Special -> Values đè lên cột dữ liệu gốc. Cuối cùng, xóa cột phụ đi.
Hy vọng mẹo nhỏ này sẽ giúp ích cho các bạn khi làm việc với dữ liệu copy từ nguồn bên ngoài. Có ai có cách nào hay hơn thì chia sẻ thêm nhé!