Funkcja sumy VBA (zakresy, kolumny i inne)

Ten samouczek pokaże Ci, jak korzystać z funkcji Sum Excel w VBA

Funkcja sum jest jedną z najczęściej używanych funkcji programu Excel i prawdopodobnie pierwszą, z której nauczą się korzystać użytkownicy programu Excel. VBA tak naprawdę nie ma odpowiednika - użytkownik musi skorzystać z wbudowanej funkcji Excela w VBA za pomocą Funkcja arkusza roboczego obiekt.

Suma funkcji arkusza roboczego

Obiekt WorksheetFunction może służyć do wywoływania większości funkcji programu Excel dostępnych w oknie dialogowym Wstaw funkcję w programie Excel. Jednym z nich jest funkcja SUMA.

123 Funkcja podrzędnaZakres("D33") = Application.WorksheetFunction.Sum("D1:D32")Napis końcowy

Możesz mieć do 30 argumentów w funkcji SUMA. Każdy z argumentów może również odnosić się do zakresu komórek.

Poniższy przykład doda komórki D1 do D9

123 Podsumowanie testowe()Zakres("D10") = Aplikacja.WorksheetFunction.SUM("D1:D9")Napis końcowy

Poniższy przykład zsumuje zakres w kolumnie D i zakres w kolumnie F. Jeśli nie wpiszesz obiektu Application, zostanie on przyjęty.

123 Podsumowanie testowe()Range("D25") = WorksheetFunction.SUM (Range("D1:D24"), Range("F1:F24"))Napis końcowy

Zauważ, że dla pojedynczego zakresu komórek nie musisz określać słowa „Zakres” w formule przed komórkami, jest to zakładane przez kod. Jeśli jednak używasz wielu argumentów, musisz to zrobić.

Przypisywanie wyniku sumy do zmiennej

Możesz chcieć użyć wyniku formuły w innym miejscu w kodzie, zamiast zapisywać go bezpośrednio z powrotem do zakresu programu Excel. W takim przypadku możesz przypisać wynik do zmiennej, która będzie używana później w kodzie.

1234567 Sub AssignSumVariable()Przyciemnij wynik jako Double'Przypisz zmiennąwynik = WorksheetFunction.SUM(Range("G2:G7"), Range("H2:H7"))'Pokaż wynikMsgBox "Całkowite zakresy to " i wynikNapis końcowy

Zsumuj obiekt zakresu

Możesz przypisać grupę komórek do obiektu Range, a następnie użyć tego obiektu Range z Funkcja arkusza roboczego obiekt.

123456789 Podzakres sumy testowej()Dim rng As Range'przypisz zakres komórekUstaw rng = Zakres("D2:E10")'użyj zakresu we wzorzeZakres("E11") = WorksheetFunction.SUM(rng)'zwolnij obiekt zakresuUstaw rng = NicNapis końcowy

Sumuj obiekty o wielu zakresach

Podobnie możesz zsumować wiele obiektów zakresu.

123456789101112 SubTestSumMultipleRanges()Dim rngA jako zakresDim rngB jako zakres'przypisz zakres komórekUstaw rngA = Zakres("D2:D10")Ustaw rngB = Zakres("E2:E10")'użyj zakresu we wzorzeZakres("E11") = Funkcja Arkusza.SUM(rngA, rngB)'zwolnij obiekt zakresuUstaw rngA = NicUstaw rngB = NicNapis końcowy

Sumuj całą kolumnę lub wiersz

Możesz także użyć funkcji Sum, aby dodać całą kolumnę lub cały wiersz

Poniższa procedura zsumuje wszystkie komórki liczbowe w kolumnie D.

123 Podsumowanie testowe()Range("F1") = WorksheetFunction.SUM(Range("D:D")Napis końcowy

Podczas gdy ta procedura poniżej zsumuje wszystkie komórki liczbowe w wierszu 9.

123 Podsumowanie testowe()Zakres("F2") = Funkcja arkusza roboczego.SUM(Zakres("9:9")Napis końcowy

Sumuj tablicę

Możesz również użyć WorksheetFunction.Sum, aby dodać wartości w tablicy.

123456789101112 Podrzędna tablica testowa()Dim intA(1 do 5) jako liczba całkowitaDim SumArray jako liczba całkowita'wypełnij tablicęintA(1) = 15intA(2) = 20intA(3) = 25intA(4) = 30intA(5) = 40'dodaj tablicę i pokaż wynikMsgBox WorksheetFunkcja.SUM(intA)Napis końcowy

Korzystanie z funkcji SumIf

Inną funkcją arkusza, której można użyć, jest funkcja SUMA.JEŻELI.

123 Podtest SumaJeżeli()Range("D11") = WorksheetFunction.SUMIF(Range("C2:C10"), 150, Range("D2:D10"))Napis końcowy

Powyższa procedura spowoduje dodanie komórek z zakresu (D2:D10), jeśli odpowiadająca komórka w kolumnie C = 150.

Wzór sumy

Kiedy używasz Arkusz roboczyFunkcja.SUM aby dodać sumę do zakresu w arkuszu, zwracana jest suma statyczna, a nie elastyczna formuła. Oznacza to, że gdy zmienią się Twoje dane w Excelu, wartość zwrócona przez Funkcja arkusza roboczego nie zmieni się.

W powyższym przykładzie procedura TestSum dodała Range(D2:D10), a wynik został umieszczony w D11. Jak widać na pasku formuły, ten wynik jest liczbą, a nie formułą.

Jeśli którakolwiek z wartości zmieni się w związku z tym w zakresie (D2:D10), wynik w D11 będzie NIE reszta.

Zamiast używać Arkusz roboczyFunkcja.SUM, możesz użyć VBA, aby zastosować funkcję sumy do komórki za pomocą Formuła lub FormułaR1C1 metody.

Metoda formuły

Metoda formuł pozwala wskazać konkretny zakres komórek, np.: D2:D10, jak pokazano poniżej.

123 Formuła sumy testów podrzędnychZakres("D11").Formuła = "=SUMA(D2:D10)"Napis końcowy

FormułaR1C1 Metoda

Metoda FromulaR1C1 jest bardziej elastyczna, ponieważ nie ogranicza Cię do określonego zakresu komórek. Poniższy przykład da nam taką samą odpowiedź jak powyższy.

123 Podrzędna formuła sumy testowej()Zakres("D11").FormułaR1C1 = "=SUMA(R[-9]C:R[-1]C)"Napis końcowy

Aby jednak formuła była bardziej elastyczna, możemy zmienić kod tak, aby wyglądał tak:

123 Podrzędna formuła sumy testowej()ActiveCell.FormulaR1C1 = "=SUM(R[-9]C:R[-1]C)"Napis końcowy

Gdziekolwiek jesteś w arkuszu, formuła zsumuje 8 komórek bezpośrednio nad nim i umieści odpowiedź w ActiveCell. Zakres wewnątrz funkcji SUMA należy odwoływać się za pomocą składni Wiersz (R) i Kolumna (C).

Obie te metody umożliwiają korzystanie z formuł Dynamic Excel w VBA.

W D11 będzie teraz formuła zamiast wartości.

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

wave wave wave wave wave