Trong Excel, ta có thể dễ dàng copy paste các cột liền kề sang một phạm vi mới trong trang tính. Vậy còn với các cột không liền kề thì phải thao tác như thế nào? Trong bài viết ngày hôm nay, Gitiho sẽ giới thiệu đến các bạn hàm UBound trong VBA và cách sử dụng hàm này để tách các cột không liền kề sang phạm vi mới trong trang tính Excel.
Trước khi học code VBA Excel thực hiện thao tác tách và ghép các cột không liền kề, chúng ta cần nắm rõ cách thức hoạt động của VBA. Nếu bạn chưa hiểu về chức năng này thì hãy tìm hiểu để sử dụng kiến thức bài viết hiệu quả nhất nhé.
Hàm UBound trong VBA có chức năng trả về kích thước của mảng với công thức như sau:
Ubound (arrayname, [dimension])
Trong đó:
Nếu bạn muốn hiểu rõ hơn về hàm Ubound và các hàm khác trong VBA, bạn có tham khảo các khóa học VBA Excel online sau tại Gitiho:
Về bản chất, việc sử dụng hàm UBound trong VBA của chúng ta sẽ copy paste các cột Excel bằng cách thay đổi cấu trúc của mảng dữ liệu. Chúng ta sẽ tìm hiểu thao tác này qua một ví dụ cụ thể dưới đây.
Trong file Excel, chúng ta có một kho dữ liệu khổng lồ lên đến 349.000 dòng. Công việc cần làm là copy dữ liệu từ các cột A, B, C, E, F, G và dán vào phạm vi mới theo thứ tự hiển thị cột A, C, E, G, F, B.
Để làm được điều này, chúng ta mở cửa sổ VBA Excel bằng cách vào tab Developer > nhóm Code > Visual Basic. Sau khi tạo một Module mới, chúng ta điền vào đó bảng code sau đây:
Sub Resize2Darr()
Dim InputArr As Variant, ColExport As Variant, ColVar As Variant, I As Long
InputArr = Sheet1.Range("A1:G" & Sheet1.Cells(Sheet1.Rows.Count, "A").End(xlUp).Row).Value
ColExport = [{1,3,5,7,6,2}]
ReDim ColVar(1 To UBound(InputArr, 1), 1 To 1)
For I = LBound(InputArr, 1) To UBound(InputArr, 1)
ColVar(I, 1) = I 'Dien so thu tu
Next
Sheet1.Range("K1").Resize(UBound(InputArr, 1), UBound(ColExport, 1)) = Application.Index(InputArr, ColVar, ColExport)
End Sub
Trong đó:
Chúng ta đóng cửa sổ VBA Excel và quay lại giao diện trang tính. Tại đây, chúng ta nhấn vào ô đầu tiên trong phạm vi đặt dữ liệu mới và chạy Macro Resize2Darr.
Kết quả trang tính Excel sẽ hiển thị như sau:
Các cột A, B, C, E, F, G tại bảng dữ liệu ban đầu đã được sắp xếp lại theo thứ tự mới A, C, E, G, F, B tại vị trí cột K đến cột P.
Bằng cách sử dụng hàm UBound trong VBA, chúng ta đã có thể viết một code VBA Excel giúp copy paste các cột không liền kề trong Excel theo thứ tự mới. Để học thêm nhiều mẹo hữu ích trong quá trình thao tác với VBA, các bạn hãy đọc thêm các bài viết trên blog Gitiho với chúng mình ngay nhé.
Nếu công việc của bạn liên quan nhiều đến quản lý, phân tích dữ liệu và làm báo cáo trên bảng tính thì giỏi Excel thôi chưa đủ. Nếu biết thêm về VBA sẽ giúp bạn tiết kiệm tối đa thời gian làm việc nhờ làm báo cáo tự động, phân tích và xử lý số liệu chính xác tuyệt đối, đặc biệt công cần lọ mọ sửa thủ công,…
Tất tần tật những kiến thức từ cơ bản đến nâng cao về cách sử dụng VBA trong Excel sẽ được đề cập trong khóa học VBAG01: Tuyệt đỉnh VBA - Tự động hóa Excel với lập trình VBA tại Gitiho
Hãy nhấn vào Học thử hoặc Đăng ký ngay!