Bài viết này cung cấp cái nhìn chuyên sâu về mảng VBA, một thành phần quan trọng trong ngôn ngữ lập trình VBA Excel. Bạn sẽ tìm hiểu tất cả những kiến thức cần thiết về mảng VBA trong Excel, từ cơ bản đến nâng cao.
1-VBA array
Mảng VBA là gì và tại sao cần sử dụng?
Mảng VBA là một kiểu biến dùng để lưu trữ danh sách các dữ liệu cùng kiểu. Ví dụ: lưu trữ danh sách các quốc gia hoặc tổng doanh số hàng tuần. Một biến thông thường trong VBA chỉ lưu trữ được một giá trị tại một thời điểm. Mảng giúp khắc phục hạn chế này, cho phép lưu trữ nhiều giá trị trong một cấu trúc duy nhất. Điều này đặc biệt hữu ích khi xử lý một lượng lớn dữ liệu, giúp mã VBA ngắn gọn và hiệu quả hơn.
2-VBA array
Hai loại mảng VBA
Có hai loại mảng VBA:
- Mảng tĩnh: Độ dài cố định, được xác định khi khai báo.
- Mảng động: Độ dài linh hoạt, có thể thay đổi trong quá trình chạy chương trình.
Khai báo mảng VBA
Khai báo mảng tĩnh:
Dim arr(0 To 5) As Long
Khai báo mảng động:
Dim arr() As Long
Hoặc:
Dim arr As Variant
Với mảng động, bạn sử dụng ReDim
để xác định kích thước sau khi khai báo.
Gán giá trị cho mảng VBA
Gán giá trị cho mảng bằng cách sử dụng chỉ số (index):
arr(1) = 22
Xác định độ dài mảng VBA
Sử dụng hàm UBound
để lấy chỉ số lớn nhất và LBound
để lấy chỉ số nhỏ nhất của mảng. Độ dài mảng được tính bằng UBound(arr) - LBound(arr) + 1
.
Hàm Array và Split
Hàm Array
dùng để khởi tạo mảng với danh sách các giá trị:
Dim arr As Variant
arr = Array("John", "Hazel", "Fred")
Hàm Split
tách chuỗi thành mảng dựa trên ký tự phân cách:
Dim arr As Variant
arr = Split("James:Earl:Jones", ":")
3-VBA array
Vòng lặp với mảng VBA
Vòng lặp For
kết hợp với LBound
và UBound
giúp duyệt qua tất cả các phần tử trong mảng:
For i = LBound(arr) To UBound(arr)
' Xử lý phần tử arr(i)
Next i
4-VBA array
Vòng lặp For Each với mảng VBA
Vòng lặp For Each
cũng dùng để duyệt mảng, nhưng chỉ đọc giá trị, không thể thay đổi giá trị phần tử:
Dim item As Variant
For Each item In arr
' Xử lý phần tử item
Next item
Hàm Erase với mảng VBA
Với mảng tĩnh, Erase
đặt lại giá trị các phần tử về mặc định. Với mảng động, Erase
giải phóng bộ nhớ đã cấp phát cho mảng.
Tăng kích thước mảng VBA
Sử dụng ReDim Preserve
để tăng kích thước mảng động mà không mất dữ liệu cũ:
ReDim Preserve arr(0 To 6)
5-VBA array
Mảng hai chiều
Mảng hai chiều là mảng của mảng, tương tự như bảng tính Excel. Khai báo mảng hai chiều:
Dim arr(1 To 3, 1 To 4) As Long
Đọc từ vùng dữ liệu sang mảng VBA
Đọc dữ liệu từ vùng trên trang tính vào mảng hai chiều:
Dim arr As Variant
arr = Range("A1:D2")
6-VBA array
Tối ưu hiệu suất với mảng VBA
Xử lý dữ liệu trong mảng nhanh hơn đáng kể so với thao tác trực tiếp trên ô. Nên đọc dữ liệu vào mảng, xử lý trong mảng, sau đó ghi kết quả trở lại trang tính.
Kết luận
Mảng VBA là công cụ mạnh mẽ để xử lý dữ liệu trong Excel. Hiểu rõ cách sử dụng mảng giúp tối ưu hóa mã VBA, tăng tốc độ xử lý và nâng cao hiệu quả công việc. Hãy bắt đầu thực hành và khám phá thêm những tính năng hữu ích của mảng VBA trong Excel!
Discussion about this post