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.