VBA tách chuỗi thành mảng | Làm thế nào để tách chuỗi thành mảng trong Excel VBA?

Excel VBA tách chuỗi thành mảng

Chuỗi là một tập hợp các ký tự được nối với nhau, khi các ký tự này được chia và được lưu trữ trong một biến thì biến đó sẽ trở thành một mảng cho các ký tự này và phương pháp chúng tôi sử dụng để tách một chuỗi để tạo thành một mảng là bằng cách sử dụng hàm SPLIT trong vba chia nhỏ chuỗi trong chuỗi một chiều.

Giống như các bảng tính trong VBA, chúng tôi có các chức năng để xử lý các giá trị Chuỗi hoặc Văn bản. Chúng ta đã rất quen thuộc với các thao tác với chuỗi như trích xuất tên đầu tiên, họ, tên đệm, v.v. Nhưng ý tưởng về việc tách giá trị chuỗi thành các mảng trong VBA thì sao? Vâng, bạn đã nghe đúng, chúng ta có thể chia câu chuỗi thành mảng bằng cách sử dụng mã hóa VBA và trong bài viết đặc biệt này, chúng tôi sẽ hướng dẫn bạn cách tách chuỗi thành một mảng trong Excel VBA.

Chia chuỗi thành một mảng là gì?

Trước tiên, hãy để tôi làm rõ điều này, "Chuỗi thành Mảng" không là gì ngoài "các phần khác nhau của câu hoặc chuỗi sẽ được chia thành nhiều phần". Ví dụ, nếu câu là "Bangalore là thủ đô của Karnataka" thì mỗi từ là một mảng khác nhau.

Vì vậy, làm thế nào để tách câu này thành mảng là chủ đề của bài viết này.

Làm thế nào để chuyển đổi chuỗi phân tách thành một mảng trong Excel VBA?

Để chuyển đổi chuỗi phân tách thành một mảng trong VBA, chúng ta có một chức năng gọi là "SPLIT". Đây là một hàm VBA thực hiện nhiệm vụ chia nhỏ giá trị chuỗi được cung cấp thành các phần khác nhau dựa trên dấu phân cách được cung cấp.

Ví dụ, nếu câu là "Bangalore là thủ đô của Karnataka" thì không gian là dấu phân cách giữa mỗi từ.

Dưới đây là cú pháp của hàm SPLIT.

  • Giá trị hoặc Biểu thức: Đây là chuỗi hoặc giá trị văn bản mà chúng tôi đang cố gắng chuyển đổi sang mảng bằng cách tách riêng từng phần của chuỗi.
  • [Dấu phân cách]: Đây không là gì ngoài những thứ phổ biến phân tách từng từ trong chuỗi. Trong câu của chúng tôi “Bangalore là thành phố thủ đô của Karnataka” mỗi từ được phân tách bằng ký tự khoảng trắng nên dấu phân cách của chúng tôi là dấu cách ở đây.
  • [Giới hạn]: Giới hạn không là gì khác ngoài kết quả là chúng ta muốn có bao nhiêu phần. Ví dụ trong câu “Bangalore là thủ đô của Karnataka” chúng ta có bảy phần nếu chúng ta chỉ cần ba phần thì chúng ta sẽ nhận được phần đầu tiên là “Bangalore”, phần thứ hai là “là” và phần thứ ba là phần còn lại của câu tức là "thành phố thủ đô của Karnataka".
  • [So sánh]: Điều này không được sử dụng 99% thời gian, vì vậy chúng ta đừng chạm vào điều này vào thời điểm này.
Bạn có thể tải xuống mẫu VBA Split String into Array Excel Template này tại đây - VBA Split String into Array Excel Template

Ví dụ 1

Ok, bây giờ chúng ta hãy xem các ví dụ thực tế.

Bước 1: Xác định biến VBA để giữ giá trị chuỗi.

Mã:

 Sub String_To_Array () Dim StringValue làm chuỗi kết thúc Sub 

Bước 2: Đối với biến này, gán chuỗi “Bangalore là thủ đô của Karnataka”.

Mã:

 Sub String_To_Array () Dim StringValue As String StringValue = "Bangalore là thủ phủ của Karnatka" End Sub 

Bước 3: Tiếp theo xác định thêm một biến có thể giữ từng phần của giá trị chuỗi trên. Về điều này, chúng ta cần lưu ý ở đây là vì câu có nhiều hơn một từ nên chúng ta cần xác định biến là “Array” để chứa nhiều hơn một giá trị.

Trong trường hợp này, chúng ta có 7 từ trong chuỗi vì vậy, hãy xác định mảng như sau.

Mã:

 Sub String_To_Array () Dim StringValue As String StringValue = "Bangalore là thủ phủ của Karnatka" Dim SingleValue () As String End Sub 

Bây giờ đối với biến mảng này, chúng ta sẽ sử dụng hàm SPLIT để chia chuỗi thành một mảng trong Excel VBA.

Mã:

 Sub String_To_Array () Dim StringValue As String StringValue = "Bangalore là thủ phủ của Karnataka" Dim SingleValue () As String SingleValue = Split (StringValue, "") End Sub 

Biểu thức là giá trị chuỗi của chúng ta, tức là biến đã giữ giá trị chuỗi nên chỉ nhập tên biến.

Dấu phân cách trong chuỗi này là ký tự khoảng trắng vì vậy hãy cung cấp cùng một ký tự.

Mã:

 Sub String_To_Array () Dim StringValue As String StringValue = "Bangalore là thủ phủ của Karnataka" Dim SingleValue () As String SingleValue = Split (StringValue, "") End Sub 

Như bây giờ để lại các phần khác của chức năng SPLIT.

Hàm SPLIT chia giá trị chuỗi thành 7 phần, mỗi từ được tách biệt với chi phí của ký tự khoảng trắng. Vì chúng ta đã khai báo biến “SingleValue” dưới dạng mảng, chúng ta có thể gán tất cả 7 giá trị cho biến này.

Chúng ta có thể viết mã như sau.

Mã:

 Sub String_To_Array () Dim StringValue As String StringValue = "Bangalore là thủ phủ của Karnataka" Dim SingleValue () As String SingleValue = Split (StringValue, "") MsgBox SingleValue (0) End Sub 

Chạy mã và xem những gì chúng tôi nhận được trong hộp tin nhắn.

Hiện tại, chúng ta có thể thấy từ đầu tiên tức là “Bangalore” để hiển thị các từ khác mà chúng ta có thể viết mã như sau.

Mã:

 Sub String_To_Array () Dim StringValue As String StringValue = "Bangalore là thủ phủ của Karnataka" Dim SingleValue () As String SingleValue = Split (StringValue, "") MsgBox SingleValue (0) & vbNewLine & SingleValue (1) & vbNewLine (2) & vbNewLine & SingleValue (3) & _vbNewLine & SingleValue (4) & vbNewLine & SingleValue (5) & vbNewLine & SingleValue (6) End Sub 

Bây giờ hãy chạy mã và xem những gì chúng ta nhận được trong hộp tin nhắn.

Mỗi và mọi từ đã được chia thành các mảng.

Ví dụ số 2

Bây giờ hãy tưởng tượng một tình huống lưu trữ các giá trị này vào các ô tức là mỗi từ vào một ô riêng biệt. Đối với điều này, chúng ta cần bao gồm vòng lặp FOR NEXT trong VBA.

Đoạn mã dưới đây sẽ chèn từng từ vào các ô riêng biệt.

 Sub String_To_Array1 () Dim StringValue As String StringValue = "Bangalore là thủ phủ của Karnataka" Dim SingleValue () As String SingleValue = Split (StringValue, "") Dim k As Integer Cho k = 1 đến 7 ô (1, k) .Value = SingleValue (k - 1) Tiếp theo k End Sub 

Thao tác này sẽ chèn từng từ như trong hình dưới đây.

Những điều cần ghi nhớ

  • Mảng và vòng lặp được sử dụng cùng nhau để làm cho mã động.
  • Hàm SPLIT yêu cầu dấu phân cách chung phân tách từng từ trong câu.
  • Độ dài mảng bắt đầu từ 0, không phải từ 1.

$config[zx-auto] not found$config[zx-overlay] not found