Văn bản thành cột được phân cách trong Macro (Microsoft Excel)
Một trong những tính năng tiện dụng nhất trong Excel là tính năng Văn bản thành Cột, cho phép bạn dễ dàng chia nội dung ô thành các ô riêng lẻ theo bất kỳ tiêu chí nào bạn chỉ định. Một phương pháp sử dụng tính năng này là cho phép nó nhận ra các ký tự trong các ô và sử dụng các ký tự đó để kích hoạt nơi diễn ra sự phân tách. Loại tách này được gọi là tách delimited.
Bạn có thể tự hỏi làm thế nào bạn có thể thực hiện thao tác phân tách văn bản thành cột trong macro mà bạn có thể đang viết. Điều này đủ dễ dàng để thực hiện bằng cách sử dụng phương thức TextToColumns trên vùng chọn bạn đã thiết lập. Hãy xem xét macro rất đơn giản sau:
Sub ExampleSplit1() Selection.TextToColumns _ Destination:=Range("A2"), _ DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=False, _ Tab:=True, _ Semicolon:=False, _ Comma:=False, _ Space:=False, _ Other:=True, _ OtherChar:="-" End Sub
Lưu ý tất cả các biến mà bạn có thể đặt cho phương thức TextToColumns.
Hầu hết các biến này chỉ cần thiết bởi vì đây là một phân tách có giới hạn; các biến đặt những gì được sử dụng làm dấu phân cách theo phương thức.
Bắt đầu với dòng Tab, các biến tương ứng trực tiếp với cài đặt bạn sẽ thực hiện trong Bước 2 của Trình hướng dẫn Chuyển văn bản thành Cột, nếu bạn đang sử dụng tính năng này theo cách thủ công. Bạn có thể đặt Tab, Dấu chấm phẩy, Dấu phẩy và Dấu cách thành Đúng hoặc Sai, tùy thuộc vào việc bạn muốn ký tự đó được sử dụng làm dấu phân cách.
Bạn cũng có thể đặt biến Khác thành Đúng hoặc Sai, tùy thuộc vào việc bạn có muốn có dấu phân tách “do người dùng xác định” hay không. Nếu bạn đặt nó thành True, thì bạn nên đặt biến OtherChar bằng với ký tự bạn muốn dùng làm dấu phân cách.
Nếu bạn sử dụng phương thức TextToColumns nhiều lần trong cùng một macro, điều duy nhất bạn cần làm đối với các lệnh gọi tiếp theo lần đầu tiên là thay đổi các biến khác với lệnh gọi trước đó. Ví dụ: giả sử bạn đang gọi phương thức hai lần trong cùng một macro và lần đầu tiên bạn muốn phân tách nằm trên một bản sao của ký tự gạch ngang, nhưng lần thứ hai bạn muốn nó nằm trên bất kỳ trường hợp nào của chữ x viết thường . Bạn có thể đặt macro lại với nhau như sau:
Sub ExampleSplit2() Dim objRange1 As Range Dim objRange2 As Range 'Set up the ranges Set objRange1 = Range("A2:A20") Set objRange2 = Range("A21:A35") 'Do the first parse objRange1.TextToColumns _ Destination:=Range("A2"), _ DataType:=xlDelimited, _ Tab:=False, _ Semicolon:=False, _ Comma:=False, _ Space:=False, _ Other:=True, _ OtherChar:="-" 'Do the second parse objRange2.TextToColumns _ Destination:=Range("A21"), _ DataType:=xlDelimited, _ OtherChar:="x" End Sub
_Lưu ý: _
Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.
ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.
Mẹo này (8317) áp dụng cho Microsoft Excel 2007, 2010, 2013, 2016, 2019 và Excel trong Office 365. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện menu cũ hơn của Excel tại đây: