Làm việc với các hàm VBA trả về một mảng trong Excel 2016

0
2

Công thức mảng là một trong những tính năng mạnh nhất của Excel. Nếu bạn quen thuộc với các công thức mảng, bạn sẽ rất vui khi biết rằng bạn có thể tạo các hàm VBA trả về một mảng.

Trả về một loạt các tên tháng

Hãy bắt đầu với một ví dụ đơn giản. Hàm MonthNames trả về một mảng gồm 12 phần tử – bạn đoán nó – tên tháng.

Hàm thángNames ()
ThángNames = Mảng (ăn tháng 1, tháng 1, tháng hai, tháng ba
Đêm tháng Tư, tháng năm, tháng năm, tháng sáu
"Tháng Chín tháng mười tháng Mười Một Tháng Mười Hai")
Chức năng kết thúc

Để sử dụng hàm MonthNames trong bảng tính, bạn phải nhập nó dưới dạng công thức mảng 12 ô. Ví dụ: chọn phạm vi A2: L2 và enter = MonthNames () . Sau đó nhấn Ctrl + Shift + Enter để nhập công thức mảng trong tất cả 12 ô đã chọn. Kiểm tra kết quả.

Nếu bạn muốn tên tháng hiển thị trong một cột, hãy chọn 12 ô trong một cột và sử dụng công thức mảng này. (Đừng quên nhập nó bằng cách nhấn Ctrl + Shift + Enter.)

= TRANSPOSE (Tháng tên ()) 

Bạn cũng có thể chọn ra một tháng từ mảng. Đây là một công thức (không phải là một công thức mảng) hiển thị phần tử thứ tư của mảng: Tháng Tư.

= INDEX (Tháng tên (), 4)

Trả về một danh sách đã sắp xếp

Giả sử rằng bạn có một danh sách các tên bạn muốn hiển thị theo thứ tự được sắp xếp trong một phạm vi ô khác. Sẽ không tốt nếu có một chức năng bảng tính làm điều đó cho bạn?

Hàm tùy chỉnh này thực hiện điều đó: Nó lấy một phạm vi các cột của một ô làm đối số và sau đó trả về một mảng các ô được sắp xếp. Phạm vi A2: A13 chứa một số tên. Phạm vi C2: C13 chứa công thức mảng đa bào này. (Hãy nhớ rằng bạn phải nhập công thức bằng cách nhấn Ctrl + Shift + Enter.)

= Sắp xếp (A2: A13)

Đây là mã cho chức năng Sắp xếp:

Chức năng được sắp xếp (Rng As Range)
Dim SortedData () là biến thể
Dim Cell As Range
Dim Temp As Variant, i As Long, j As Long
Dim NonEmpty As Long
'Chuyển dữ liệu sang SortedData
Đối với mỗi tế bào trong Rng
Nếu không phải là IsEmpty (Di động) thì
NonEmpty = NonEmpty + 1
ReDim Bảo tồn Sắp xếpData (1 đến KhôngEmpty)
SortedData (NonEmpty) = Cell.Value
Kết thúc nếu
Ô tiếp theo
'Sắp xếp mảng
Cho i = 1 đến NonEmpty
Cho j = i + 1 thành NonEmpty
Nếu SortedData (i)> SortedData (j) Sau đó
Temp = Sắp xếpData (j)
SortedData (j) = SortedData (i)
SortedData (i) = Temp
Kết thúc nếu
Tiếp theo j
Tiếp theo tôi
'Chuyển mảng và trả về
Sắp xếp = Application.Transpose (SortedData)
Chức năng kết thúc

Hàm Sắp xếp bắt đầu bằng cách tạo một mảng có tên SortedData. Mảng này chứa tất cả các giá trị không trống trong phạm vi đối số. Tiếp theo, mảng SortedData được sắp xếp, sử dụng thuật toán sắp xếp bong bóng. Bởi vì mảng là một mảng ngang, nó phải được hoán vị trước khi nó được trả về bởi hàm.

Hàm Sắp xếp hoạt động với một phạm vi có kích thước bất kỳ, miễn là nó nằm trong một cột hoặc một hàng. Nếu dữ liệu chưa được sắp xếp liên tiếp, công thức của bạn cần sử dụng hàm TRANSPOSE của Excel để hiển thị dữ liệu được sắp xếp theo chiều ngang. Ví dụ:

= TRANSPOSE (Sắp xếp (A16: L16))

Xem thêm: Cách thực thi Macro VBA bằng cách sử dụng phím tắt trong Excel 2016

Khóa học VBA Excel tại Hà Nội

LEAVE A REPLY

Please enter your comment!
Please enter your name here