HƯỚNG DẪN SỬ DỤNG HÀM UBOUND TRONG VBA ĐỂ GHÉP CÁC CỘT KHÔNG LIỀN KỀ

Bài đăng này cung cấp một cái nhìn chuyên sâu về mảng VBA, một phần rất quan trọng của ngôn ngữ lập trình trong VBA Excel. Nó bao gồm mọi thứ bạn cần biết về VBA array trong Excel. Cùng Học Excel Online khám phá ngay nhé! 

VBA Array là gì?

Trong phần đầu tiên, chúng ta sẽ xem xét VBA Array chính xác là gì. Bạn có thể không hiểu một số mã trong phần đầu tiên. Đừng lo lắng. Tôi sẽ chia nhỏ tất cả thành các thuật ngữ đơn giản trong các phần sau.Phần đầu tiên bên dưới cung cấp hướng dẫn tham khảo nhanh để sử dụng VBA Array. Hãy quay lại nó bất cứ lúc nào bạn cần một lời nhắc nhanh về cách các phần của VBA Array hoạt động.Phần còn lại của bài đăng cung cấp hướng dẫn đầy đủ nhất mà bạn sẽ tìm thấy về VBA array.

Bạn đang xem: Hướng dẫn sử dụng hàm ubound trong vba để ghép các cột không liền kề

Các vòng lặp được sử dụng để đọc qua VBA Array: 

Các cấu trúc dữ liệu khác trong VBA: 

VBA Collection – Tốt hơn khi bạn muốn tiếp tục chèn các mục vì nó tự động thay đổi kích thước. VBA Array List – Danh sách này hư cấu hơn Collection. VBA Dictionary – Cho phép lưu trữ một cặp Key \ Value. Rất hữu ích trong nhiều ứng dụng. 

Hướng dẫn nhanh về VBA Array

Công việcMảng tĩnhMảng động
Khai báoDim arr(0 To 5) As LongDim arr() As LongDim arr As Variant
Đặt kích thướcSee Declare aboveReDim arr(0 To 5)As Variant
Đặt kích thước (Số lượng mục)See ArraySize function below.See ArraySize function below.

Xem thêm: Dự đoán đội bóng lên ngôi World Cup 2022, Brazil, Anh hay Pháp?

Tăng kích thước (Dữ liệu hiện có)Dynamic OnlyReDim Preserve arr(0 To 6)
Đặt giá trịarr(1) = 22arr(1) = 22
Nhận giá trịtotal = arr(1)total = arr(1)
Ví trí đầu tiênLBound(arr)LBound(arr)
Vị trí cuối cùngUbound(arr)Ubound(arr)
Đọc tất cả mục(1D)For i = LBound(arr) To UBound(arr)Next iOrFor i = LBound(arr,1) To UBound(arr,1)Next iFor i = LBound(arr) To UBound(arr)Next iOrFor i = LBound(arr,1) To UBound(arr,1)Next i
Đọc tất cả mục(2D)For i = LBound(arr,1) To UBound(arr,1) For j = LBound(arr,2) To UBound(arr,2) Next jNext iFor i = LBound(arr,1) To UBound(arr,1) For j = LBound(arr,2) To UBound(arr,2) Next jNext i
Đọc tất cả mụcDim item As VariantFor Each item In arrNext itemDim item As VariantFor Each item In arrNext item
Chuyển qua SubSub MySub(ByRef arr() As String)Sub MySub(ByRef arr() As String)
Trả về chức năngFunction GetArray() As Long() Dim arr(0 To 5) As Long GetArray = arrEnd FunctionFunction GetArray() As Long() Dim arr() As Long GetArray = arrEnd Function
Nhận chức năngDynamic onlyDim arr() As LongArr = GetArray()
Xóa mảngErase arr*Resets all values to defaultErase arr*Deletes array
Chuỗi đến mảngDynamic onlyDim arr As Variantarr = Split(“James:Earl:Jones”,”:”)
Mảng đến chuỗiDim sName As StringsName = Join(arr, “:”)Dim sName As StringsName = Join(arr, “:”)
Lấp đầy hết các giá trịChỉ độngDim arr As Variantarr = Array(“John”, “Hazel”, “Fred”)
Vùng đến mảngChỉ độngDim arr As Variantarr = Range(“A1:D2”)
Mảng đến vùngGiống độngDim arr As VariantRange(“A5:D6”) = arr

Tải xuống mã nguồn và dữ liệu

Vui lòng nhấp vào nút bên dưới để lấy mã nguồn được tài liệu đầy đủ cho bài viết này.

VBA Array là gì và tại sao cần nó?

VBA Array là một kiểu biến. Nó được sử dụng để lưu trữ danh sách các dữ liệu cùng loại. Một ví dụ sẽ là lưu trữ danh sách các quốc gia hoặc danh sách tổng số hàng tuần. Trong VBA, một biến bình thường chỉ có thể lưu trữ một giá trị tại một thời điểm. Trong ví dụ sau, chúng ta sử dụng một biến để lưu trữ điểm của một học sinh:
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
47-VBA arrayNhận xét sau đây là của hai độc giả đã sử dụng mảng để tăng tốc macro của họ “Một vài dự án của tôi đã đi từ gần như không thể và lâu thành gần như quá dễ dàng và giảm thời gian chạy từ 10: 1.” – Dane “Một báo cáo tôi đã thực hiện mất gần 3 giờ để chạy khi truy cập trực tiếp vào các ô – 5 phút với mảng” – Jim 

Kết luận

Sau đây là tóm tắt những điểm chính của bài đăng này: Mảng là một cách hiệu quả để lưu trữ danh list of items cùng loại. Bạn có thể truy cập trực tiếp vào một mục mảng bằng cách sử dụng số vị trí được gọi là chỉ subscript or index. Lỗi phổ biến “Subscript out of Range” là do truy cập một vị trí không tồn tại.  Có hai loại mảng: Tĩnh và Động. Static được sử dụng khi độ dài của mảng luôn bằng nhau. Dynamic array cho phép bạn xác định độ dài của mảng tại thời điểm chạy. LBound và UBound cung cấp một cách an toàn để tìm các chỉ số con nhỏ nhất và lớn nhất của mảng. Mảng cơ bản là một chiều. Bạn cũng có thể có các mảng nhiều chiều. Bạn chỉ có thể truyền một mảng cho một quy trình bằng ByRef. Bạn làm như thế này: ByRef arr() as long. Bạn có thể trả về một mảng từ một hàm nhưng mảng, nó được gán cho, hiện không được chỉ định.   Một trang tính với các hàng và cột của nó về cơ bản là một mảng hai chiều. Bạn có thể đọc trực tiếp từ một vùng trang tính thành một mảng hai chiều chỉ trong một dòng mã. Bạn cũng có thể viết từ một mảng hai chiều sang một phạm vi chỉ trong một dòng mã.Chắc hẳn bạn đã nắm được những điều cơ bản trong mảng VBA rồi. Hãy nhớ VBA Array rất quan trọng nên phải chú trọng nắm vững nhé. Học Excel Online chúc bạn nhanh chóng thuần thục VBA Excel nhé!