image

Trong các bài viết trước, chúng ta đã học cách trích xuất các giá trị duy nhất từ ​​một dải ô bằng cách sử dụng kết hợp các hàm excel khác nhau. Mặc dù chúng hoạt động tuyệt vời nhưng chúng cũng phức tạp, không thể phủ nhận điều này. Nếu bạn thường xuyên trích xuất các giá trị duy nhất, những công thức đó có thể khiến bạn mệt mỏi. Chúng cũng làm cho tệp nặng và chậm.

Vì vậy, trong bài viết này, chúng ta sẽ học cách tạo một hàm do người dùng xác định lấy một phạm vi làm đối số và chỉ trả về các giá trị duy nhất từ ​​phạm vi đó. Bạn có thể sao chép trực tiếp mã vào tệp của mình và bắt đầu sử dụng ngay lập tức.

Mã VBA cho chức năng duy nhất:

Function UNIQUES(rng As Range) As Variant()

Dim list As New Collection

Dim Ulist() As Variant

'Adding each value of rng to the collection.

On Error Resume Next

For Each Value In rng

'here value and key are the same. The collection does not allow duplicate keys hence only unique values will remain.

list.Add CStr(Value), CStr(Value)

Next

On Error GoTo 0

'Defining the length of the array to the number of unique values. Since the array starts from 0, we subtract 1.

ReDim Ulist(list.Count - 1, 0)

'Adding unique value to the array.

For i = 0 To list.Count - 1

Ulist(i, 0) = list(i + 1)

Next

'Printing the array

UNIQUES = Ulist

End Function

Sao chép trình soạn thảo VB codeto của excel.

Sử dụng hàm DUY NHẤT

Hàm trên là một liên kết: / custom-functions-in-vba-create-vba-function-to-return-array [hàm mảng nhiều ô do người dùng xác định]. Nó có nghĩa là bạn phải chọn phạm vi nơi bạn muốn danh sách duy nhất được in, sau đó viết công thức và nhấn tổ hợp phím CTRL + SHIFT + ENTER.

Trong gif ở trên, chúng tôi có một danh sách các quốc gia. Bây giờ có nhiều quốc gia trùng lặp trong danh sách. Chúng tôi chỉ muốn lấy danh sách các quốc gia duy nhất.

Để làm như vậy, hãy chọn một phạm vi mà bạn muốn có danh sách duy nhất. Bây giờ viết công thức này:

=UNIQUES(A2:B7)

Nhấn tổ hợp phím CTRL + SHIFT + ENTER. Và nó được thực hiện. Tất cả các giá trị duy nhất được liệt kê trong phạm vi đã chọn.

Lưu ý: * Nếu dải ô bạn đã chọn nhiều hơn giá trị duy nhất, thì chúng sẽ hiển thị lỗi # N / A. Bạn có thể sử dụng nó như một dấu hiệu kết thúc các giá trị duy nhất. Nếu bạn không thấy # N / A ở cuối danh sách, điều đó có nghĩa là có thể có nhiều giá trị duy nhất .

Giải thích mã

Tôi đã sử dụng hai khái niệm chính của VBA trong chức năng UD này.

for Each Value In rng

list.Add CStr(Value), CStr(Value) Next

next

Vì chúng tôi không thể in một bộ sưu tập trên trang tính, chúng tôi đã chuyển nó sang một UList mảng khác.

for i = 0 To list.Count - 1

Ulist(i, 0) = list(i + 1) Next

next

Lưu ý: * Lập chỉ mục mảng VBA bắt đầu từ 0 và Lập chỉ mục bộ sưu tập bắt đầu từ 1. Đây là lý do tại sao chúng ta đã trừ đi 1 cho mảng trong vòng lặp for và thêm 1 vào chỉ mục của bộ sưu tập danh sách.

Cuối cùng, chúng tôi đã in mảng đó ra trang tính.

Có một hàm DUY NHẤT không có sẵn cho excel 2016 làm điều tương tự. Chức năng đó có sẵn trong Excel 2019. Chỉ các thành viên của chương trình của người trong cuộc mới có quyền truy cập vào chức năng đó. Bằng cách sử dụng kỹ thuật này, bạn có thể thể hiện trong văn phòng vì đã đi trước MS.

Vì vậy, các bạn, đây là cách bạn có thể tạo một hàm trích xuất các giá trị duy nhất một cách đơn giản. Tôi hy vọng tôi đã giải thích đủ để làm cho bạn hiểu điều này. Nếu bạn có bất kỳ câu hỏi cụ thể nào về điều này hoặc bất kỳ câu hỏi nào khác liên quan đến VBA excel, hãy hỏi nó trong phần nhận xét bên dưới.

Nhấp vào liên kết dưới đây để tải xuống tệp làm việc:

Bài viết liên quan: