Xóa bỏ thông số giới hạn trong tính năng tự định dạng cân đối văn bản theo cột
Có bao giờ bạn từng thử mở 1 tệp dạng .csv hoặc sao chép cắt dán số liệu vào bảng tính Excel và để rồi gặp phải tình trạng văn bản bị lộn xộn hết lên chưa? Nếu đã từng gặp phải vấn đề đó rồi thì thủ phạm không ai khác chính là do tính năng tự định dạng cân đối văn bản theo cột. Rất may có một trình ...
Có bao giờ bạn từng thử mở 1 tệp dạng .csv hoặc sao chép cắt dán số liệu vào bảng tính Excel và để rồi gặp phải tình trạng văn bản bị lộn xộn hết lên chưa? Nếu đã từng gặp phải vấn đề đó rồi thì thủ phạm không ai khác chính là do tính năng tự định dạng cân đối văn bản theo cột. Rất may có một trình cài đặt chuyên biệt có tính năng tách 1 cột đơn lẻ chứa số liệu bị giới hạn thành nhiều cột nhỏ hơn, dưới đây là ảnh của hộp thoại đó, tại bước 2/3:
Trong trường hợp này, 3 thông số giới hạn văn bản bao gồm dấu tab, dấu phẩy và dấu hai chấm.
Đây là một phương pháp vô cùng hữu dụng và bản thân tôi cũng thường xuyên sử dụng đến. Thực chất vấn đề nằm ở chỗ Excel thường bổ sung tiện ích hỗ trợ người dùng thông qua việc tự động ghi nhớ lại định dạng gốc của văn bản cho các bước mở tệp .csv hoặc sao chép cắt dán văn bản kế tiếp. Mặc dù nhiều lúc đây là một tính năng hiệu quả nhưng có những lúc nó lại không được như vậy. Để loại bỏ các thông sốgiới hạn, bạn cần mở hộp thoại trên, bỏ tick vào các lựa chọn và bấm Cancel.
Nếu như bạn mở hoặc dán trực tiếp số liệu vào 1 macro, sẽ không có cách nào trực tiếp cho bạn kiểm tra được hoặc chạy lại định dạng gốc của văn bản đó. Phương pháp ở đây là phải “làm giả” chức năng tự định dạng cân đối văn bản theo cột. Đoạn mã phía dưới sẽ giúp bạn làm được điều này, kết quả là các thông số giới hạn trong hộp thoại tự định dạng cân đối văn bản theo cột sẽ bị xóa hoàn toàn (mà không làm thay đổi nội dung của trang tính)
“Sub ClearTextToColumns()
On Error Resume Next
If IsEmpty(Range(“A1”)) Then Range(“A1”) = “XYZZY”
Range(“A1”).TextToColumns Destination:=Range(“A1”), _
DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, _
Tab:=False, _
Semicolon:=False, _
Comma:=False, _
Space:=False, _
Other:=False, _
OtherChar:=””
If Range(“A1”) = “XYZZY” Then Range(“A1”) = “”
If Err.Number <> 0 Then MsgBox Err.Description
End Sub”
Macro mặc định rằng bảng tính đang được hoạt động và không hề bị mã hóa mật khẩu. Có thể thấy nội dung của ô tính A1 không bị thay đổi bởi vì chức năng tự định dạng cân đối văn bản theo cột không được bật lên.
Nếu ô A1 là một ô trống, đoạn mã sẽ tự điền vào một chuỗi giá trị tạm thời (bởi vì nếu để ô trống thì chức năng tự định dạng sẽ không hoạt động được). Thuật toán này sau đó sẽ tự động xóa chuỗi giá trị tạm thời đi trước khi kết thúc hết quy trình.