W tym artykule stworzymy makro do wyodrębniania unikalnych wartości ze zdefiniowanego zakresu.
Surowe dane dla tego przykładu składają się ze zduplikowanych wpisów nazw krajów z zakresu A7:A21.
Stworzyliśmy makro „FindUniqueValues”, aby wyodrębnić unikalne wartości ze zdefiniowanego zakresu. To makro można uruchomić, klikając przycisk „Prześlij”. Przed kliknięciem przycisku „Prześlij” musimy określić adres zakresu zawierającego zduplikowane dane w komórce H9 oraz adres miejsca docelowego, w którym powinno pojawić się wyjście.
Wyjaśnienie logiczne
Makro „FindUniqueValues” przyjmuje jako parametry wejściowe dwa obiekty zakresu. Pierwszy parametr określa zakres, który zawiera zduplikowane dane, a drugi parametr określa pozycję komórki początkowej, która będzie zawierać dane wyjściowe. Tego makra nie można wywołać bezpośrednio, ponieważ musimy określić parametry, dlatego utworzyliśmy drugie makro „MacroRunning”, aby wywołać makro.
Makro „MacroRunning” wywołuje makro „FindUniqueValues” z parametrem wprowadzonym przez użytkownika.
Wyjaśnienie kodu
SourceRange.AdvancedFilter Action:=xlFilterCopy, _
CopyToRange:=TargetCell, Unique:=True
Metoda AdvancedFilter obiektu Range służy do filtrowania lub kopiowania danych z zakresu na podstawie określonych kryteriów. Aby skopiować tylko unikalne wartości, musimy ustawić parametr Unique w AdvancedFilter na True.
Proszę postępować zgodnie z poniższym kodem!
Option Explicit Sub FindUniqueValues(SourceRange As Range, TargetCell As Range) 'Korzystanie z filtra zaawansowanego do pobierania unikalnych elementów z zakresu źródłowego SourceRange.AdvancedFilter Action:=xlFilterCopy, _ CopyToRange:=TargetCell, Unique:=True End Sub' MacroRunning Wywołanie makra FindUniqueValues Wywołanie FindUniqueValues(Range(Range("H9")).Value), Range(Range("H10").Value)) End Sub
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