VBA - Loại bỏ các bản sao khỏi mảng

Hướng dẫn này sẽ dạy bạn cách xóa các bản sao khỏi Mảng trong VBA.

Loại bỏ các bản sao

Cách dễ nhất để loại bỏ các bản sao khỏi Mảng VBA là gán giá trị mảng cho Bộ sưu tập VBA và sau đó chuyển các giá trị trở lại Mảng. Bộ sưu tập không cho phép các giá trị trùng lặp và do đó bằng cách sử dụng Bộ sưu tập, chúng tôi có thể xóa các bản sao khỏi một mảng. Chúng tôi đã tạo một chức năng để thực hiện tác vụ này:

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 Hàm ArrayRemoveDups (MyArray As Variant) As VariantDim nFirst As Long, nLast As Long, i As LongLàm mờ mục dưới dạng chuỗiDim arrTemp () Dưới dạng chuỗiDim Coll làm bộ sưu tập mới'Nhận vị trí mảng đầu tiên và cuối cùngnFirst = LBound (MyArray)nLast = UBound (MyArray)ReDim arrTemp (nFirst Đến nLast)'Chuyển đổi mảng thành chuỗiFor i = nFirst To nLastarrTemp (i) = CStr (MyArray (i))Tiếp theo tôi'Điền Bộ sưu tập Tạm thờiKhi có lỗi Tiếp tục tiếp theoFor i = nFirst To nLastColl.Add arrTemp (i), arrTemp (i)Tiếp theo tôiErr.ClearLỗi GoTo 0'Thay đổi kích thước mảngnLast = Coll.Count + nFirst - 1ReDim arrTemp (nFirst Đến nLast)'Điền mảngFor i = nFirst To nLastarrTemp (i) = Coll (i - nFirst + 1)Tiếp theo tôi'Mảng đầu raArrayRemoveDups = arrTempChức năng kết thúcSub ArrTest ()Dim strNames (1 đến 4) dưới dạng chuỗiDim outputArray () As StringDim i As LongLàm mờ mục dưới dạng biến thể'Đặt giá trị mảng ban đầustrNames (1) = "Shelly"strNames (2) = "Steve"strNames (3) = "Neema"strNames (4) = "Steve"'Gọi chức năng trùng lặpoutputArray = ArrayRemoveDups (strNames)'Xuất giá trị cho Cửa sổ ngay lập tức (CTRL + G)Đối với mỗi mục Trong outputArrayMục Debug.PrintMục tiếp theoKết thúc Sub

Lưu ý: Trong ví dụ, chúng tôi buộc Mảng của chúng tôi bắt đầu từ 1 (không phải 0). Nếu mảng của bạn bắt đầu từ 0, bạn sẽ cần sửa đổi mã một chút.

Lưu ý rằng chúng tôi chuyển đổi nội dung mảng thành một chuỗi. Nếu cần, bạn có thể chuyển đổi các chuỗi về số nguyên sau khi quá trình hoàn tất.

wave wave wave wave wave