Znajdowanie unikalnych wartości za pomocą VBA w Microsoft Excel

Anonim

W tym artykule stworzymy niestandardową funkcję do wyszukiwania unikalnych wartości ze zdefiniowanego zakresu.

Surowe dane dla tego przykładu składają się ze zduplikowanych wpisów nazwy kraju w zakresie A8:A21.

Wyjaśnienie logiczne

Stworzyliśmy niestandardową funkcję „UniqueItem”, aby wyodrębnić unikalne wartości z zakresu. Ta funkcja przyjmuje jako dane wejściowe dwa parametry. Pierwszy parametr to zakres, na który składają się zduplikowane dane, a drugi parametr określa numer indeksu unikalnej wartości w unikalnym zbiorze.

Ta funkcja zwraca unikalną wartość z zakresu na podstawie numeru indeksu. Drugi parametr jest parametrem opcjonalnym, jeżeli drugi parametr nie zostanie podany to funkcja zwraca numer unikalnej wartości w zdefiniowanym zakresie.

Jeżeli wartość zdefiniowana dla drugiego parametru jest większa niż liczba unikalnych wartości w zakresie, funkcja zwraca ostatnią unikalną wartość.

Wyjaśnienie kodu

Przy błędzie Wznów Dalej

Dla każdej wartości komórki w zakresie wejściowym

CUnique.Add CellValue.Value, CStr(CellValue.Value)

Następny

W przypadku błędu Przejdź do 0

Powyższy kod służy do stworzenia obiektu kolekcji, który będzie zawierał unikalną wartość ze zdefiniowanego zakresu. Instrukcje „On Error” służą do obsługi błędów, ponieważ gdy kod próbuje umieścić zduplikowane wartości w kolekcji, kolekcja wygeneruje błąd.

Proszę postępować zgodnie z poniższym kodem!

 Opcja Funkcja jawna UniqueItem(InputRange As Range, Opcjonalny ItemNo As Integer = 0) As Variant Dim CellValue As Range Dim CUnique As New Collection Dim UCount As Integer W przypadku błędu Wznów Dalej 'Dodawanie unikalnych elementów do kolekcji ze zdefiniowanego zakresu For Each CellValue In InputRange CUnique .Add CellValue.Value, CStr(CellValue.Value) Next On Error GoTo 0 'Pobieranie liczby unikalnych elementów w kolekcji UCount = CUnique.Count If ItemNo = 0 Then 'Zwracana liczba unikalnych elementów UniqueItem = UCount ElseIf ItemNo <= UCount Then 'Zwracanie unikalnej wartości na podstawie numeru pozycji UniqueItem = CUnique(ItemNo) Else 'Zwracanie ostatniej unikalnej wartości UniqueItem = CUnique(UCount) End If End Function 

Jeśli podobał Ci się ten blog, podziel się nim ze znajomymi na Facebooku. Możesz również śledzić nas na Twitterze i Facebooku.

Chcielibyśmy usłyszeć od Ciebie, daj nam znać, jak możemy poprawić naszą pracę i uczynić ją lepszą dla Ciebie. Napisz do nas na stronie e-mail