Funcția sumă VBA (intervale, coloane și multe altele)

Acest tutorial vă va arăta cum să utilizați funcția Excel Sum în VBA

Funcția sumă este una dintre cele mai utilizate funcții Excel și probabil prima pe care utilizatorii Excel învață să o folosească. VBA nu are de fapt un echivalent - un utilizator trebuie să utilizeze funcția Excel încorporată în VBA folosind WorkSheetFunction obiect.

Foaie de lucru SumăFuncție

Obiectul WorksheetFunction poate fi utilizat pentru a apela majoritatea funcțiilor Excel disponibile în caseta de dialog Insert Function din Excel. Funcția SUM este una dintre ele.

123 Sub TestFunctionRange ("D33") = Application.WorksheetFunction.Sum ("D1: D32")Sfârșitul Sub

Puteți avea până la 30 de argumente în funcția SUM. Fiecare dintre argumente se poate referi și la o gamă de celule.

Acest exemplu de mai jos va adăuga celulele D1 la D9

123 SubSum Test ()Range ("D10") = Application.WorksheetFunction.SUM ("D1: D9")Sfârșitul Sub

Exemplul de mai jos va adăuga un interval în coloana D și un interval în coloana F. Dacă nu tastați obiectul Application, acesta va fi presupus.

123 SubSum Test ()Range ("D25") = WorksheetFunction.SUM (Range ("D1: D24"), Range ("F1: F24"))Sfârșitul Sub

Observați pentru un singur interval de celule că nu trebuie să specificați cuvântul „Interval” în formula din fața celulelor, acesta este presupus de cod. Cu toate acestea, dacă utilizați mai multe argumente, trebuie să faceți acest lucru.

Atribuirea unui rezultat sumă unei variabile

Poate doriți să utilizați rezultatul formulei dvs. în altă parte în cod, mai degrabă decât să o scrieți direct înapoi și în intervalul Excel. Dacă acesta este cazul, puteți atribui rezultatul unei variabile pentru a o utiliza ulterior în cod.

1234567 Sub AssignSumVariable ()Reduceți rezultatul ca Dublu'Atribuiți variabilaresult = WorksheetFunction.SUM (Range ("G2: G7"), Range ("H2: H7"))'Arată rezultatulMsgBox "Totalul intervalelor este" & rezultatSfârșitul Sub

Sumați un obiect Range

Puteți atribui un grup de celule obiectului Range și apoi utilizați acel obiect Range cu Foaie de lucruFuncție obiect.

123456789 Sub TestSumRange ()Dim rng As Range'atribuiți gama de celuleSetați rng = Range ("D2: E10")'utilizați intervalul din formulăRange ("E11") = WorksheetFunction.SUM (rng)'eliberați obiectul de gamăSet rng = NothingSfârșitul Sub

Suma obiectelor cu intervale multiple

În mod similar, puteți însuma mai multe obiecte Range.

123456789101112 Sub TestSumMultipleRanges ()Dim rngA As RangeDim rngB ca Range'atribuiți gama de celuleSetați rngA = Range ("D2: D10")Setați rngB = Range ("E2: E10")'utilizați intervalul din formulăRange ("E11") = WorksheetFunction.SUM (rngA, rngB)'eliberați obiectul de gamăSetați rngA = NimicSetați rngB = NimicSfârșitul Sub

Suma întreagă coloană sau rând

De asemenea, puteți utiliza funcția Sum pentru a adăuga o coloană întreagă sau un rând întreg

Această procedură de mai jos va însuma toate celulele numerice din coloana D.

123 SubSum Test ()Range ("F1") = WorksheetFunction.SUM (Range ("D: D")Sfârșitul Sub

În timp ce această procedură de mai jos va adăuga toate celulele numerice din rândul 9.

123 SubSum Test ()Range ("F2") = WorksheetFunction.SUM (Range ("9: 9")Sfârșitul Sub

Sumați o matrice

De asemenea, puteți utiliza WorksheetFunction.Sum pentru a adăuga valori într-o matrice.

123456789101112 Sub TestArray ()Dim intA (1 până la 5) ca întregDim SumArray Ca întreg'populează matriceaintA (1) = 15intA (2) = 20intA (3) = 25intA (4) = 30intA (5) = 40'adăugați matricea și arătați rezultatulMsgBox WorksheetFunction.SUM (intA)Sfârșitul Sub

Utilizarea funcției SumIf

O altă funcție de foaie de lucru care poate fi utilizată este funcția SUMIF.

123 SubTestSumIf ()Range ("D11") = WorksheetFunction.SUMIF (Range ("C2: C10"), 150, Range ("D2: D10"))Sfârșitul Sub

Procedura de mai sus va adăuga celulele din Interval (D2: D10) numai dacă celula corespunzătoare din coloana C = 150.

Formula sumei

Când utilizați WorksheetFunction.SUM pentru a adăuga o sumă într-un interval din foaia de lucru, se returnează o sumă statică, nu o formulă flexibilă. Aceasta înseamnă că atunci când cifrele dvs. din Excel se schimbă, valoarea care a fost returnată de Foaie de lucruFuncție nu se va schimba.

În exemplul de mai sus, procedura TestSum a adăugat Range (D2: D10) și rezultatul a fost introdus în D11. După cum puteți vedea în bara de formule, acest rezultat este o cifră și nu o formulă.

Dacă oricare dintre valori se schimbă, prin urmare, în Interval (D2: D10), rezultatul în D11 va fi NU Schimbare.

În loc să utilizați WorksheetFunction.SUM, puteți utiliza VBA pentru a aplica o funcție sumă unei celule folosind Formulă sau FormulaR1C1 metode.

Metoda Formula

Metoda formulă vă permite să indicați în mod specific către o gamă de celule, de exemplu: D2: D10 așa cum se arată mai jos.

123 Sub TestSumFormulaInterval ("D11"). Formula = "= SUM (D2: D10)"Sfârșitul Sub

Metoda FormulaR1C1

Metoda FromulaR1C1 este mai flexibilă în sensul că nu vă restrânge la un interval set de celule. Exemplul de mai jos ne va oferi același răspuns ca cel de mai sus.

123 Sub TestSumFormula ()Interval ("D11"). FormulaR1C1 = "= SUM (R [-9] C: R [-1] C)"Sfârșitul Sub

Cu toate acestea, pentru a face formula mai flexibilă, am putea modifica codul astfel:

123 Sub TestSumFormula ()ActiveCell.FormulaR1C1 = "= SUM (R [-9] C: R [-1] C)"Sfârșitul Sub

Oriunde vă aflați în foaia de lucru, formula va adăuga apoi cele 8 celule direct deasupra acesteia și va plasa răspunsul în ActiveCell. Gama din interiorul funcției SUM trebuie menționată folosind sintaxa Rând (R) și Coloană (C).

Ambele metode vă permit să utilizați formule dinamice Excel în cadrul VBA.

Acum va exista o formulă în D11 în loc de o valoare.

Vei ajuta la dezvoltarea site-ului, partajarea pagina cu prietenii

wave wave wave wave wave