Excel VBA - suma i przecięcie

Excel VBA ma dwie metody, należące do obiektu Application, do manipulowania dwoma lub więcej zakresami: Union i Intersect.

Unia

Metoda Union zwraca wszystkie komórki w co najmniej dwóch zakresach przekazanych jako jej argument.

Następujące polecenie wybierze zakres pokazany na poniższym obrazku:

1 Unia(Zakres("A1:B4"),Zakres("B3:C6")).Wybierz

Do zakresu zwracanego przez metodę Union możesz przypisać dowolną wartość lub formułę:

1 Unia(Zakres("A1:B4"), Zakres("B3:C6")) = 10

Spowoduje to wprowadzenie wartości 10 w każdej komórce w Unii.

Możesz zawinąć dowolną funkcję, która podsumowuje zakres wokół metody Union. Poniższy przykład zwróci sumę wartości w zakresach A1:B4 i B3:C6:

1 Wynik = Application.WorksheetFunction.Sum(union(Range("A1:B4"), Range("B3:C6")))

Możesz być zaskoczony, gdy uzyskasz wartość 160! Chociaż w Unii jest tylko 14 komórek (8 w każdym zakresie, przy czym 2 są wspólne), gdy spojrzysz na Zaznaczenie, w rzeczywistości suma zwraca 16 komórek, stąd wynik jako 160.

Przecinać

Metoda Intersect zwraca tylko wspólne komórki w co najmniej dwóch zakresach przekazanych jako jej argument.

Następujące polecenie wybierze zakres pokazany (szare pole) na poniższym obrazku:

1 Przecięcie(Zakres("A1:B4");Zakres("B3:C6")).Wybierz

Korzystanie z przecięcia

Najczęstszym zastosowaniem funkcji Przecięcie dotyczy zdarzeń związanych z Arkuszem lub skoroszytem. Służy do sprawdzania, czy zmienione komórki należą do zakresu zainteresowania. Postępując zgodnie z przykładem, sprawdź, czy komórki zmienione (zidentyfikowane przez cel) i zakres A1:A10 są wspólne i podejmij odpowiednie działania, jeśli są.

Obiekt Intersect nie zwraca nic, jeśli nie ma wspólnych komórek, więc Intersect(Target, Range(„A1:A10”)) Is Nothing będzie True, jeśli nie ma wspólnych komórek. Dodanie Nie do warunku czyni go Prawdą tylko wtedy, gdy wynik testu Przecięcie(Cel, Zakres(„A1:A10”)) Jest Nic nie jest Fałszem, innymi słowy Cel i Zakres A1:A10 mają kilka wspólnych komórek.

12345 Private Sub Worksheet_Change (ByVal Target As Range)Jeśli nie przecina(cel, zakres("A1:A10")) jest niczym wtedy' Podejmij pożądane działanieZakończ, jeśliNapis końcowy

Autor: Vinamra Chandra

Będziesz pomóc w rozwoju serwisu, dzieląc stronę ze swoimi znajomymi

wave wave wave wave wave