Ta vadnica vam bo pokazala, kako uporabljati funkciji Excel SUMIF in SUMIFS v VBA
VBA nima enakovrednih funkcij SUMIF ali SUMIFS, ki jih lahko uporabite - uporabnik mora uporabiti vgrajene funkcije Excel v VBA z uporabo Funkcija delovnega lista predmet.
Funkcija delovnega lista SUMIF
Objekt WorksheetFunction lahko uporabite za klic večine Excelovih funkcij, ki so na voljo v pogovornem oknu Vstavi funkcijo v Excelu. Ena izmed njih je funkcija SUMIF.
123 | Sub TestSumIf ()Obseg ("D10") = Application.WorksheetFunction.SumIf (Range ("C2: C9"), 150, Range ("D2: D9"))End Sub |
Zgornji postopek bo sešteval celice v območju (D2: D9) le, če je ustrezna celica v stolpcu C = 150.
Dodelitev rezultata SUMIF spremenljivki
Rezultat svoje formule boste morda želeli uporabiti drugje v kodi, namesto da bi ga zapisali neposredno nazaj in v obseg Excel. V tem primeru lahko rezultat dodelite spremenljivki, ki jo boste uporabili pozneje v kodi.
1234567 | Sub AssignSumIfVariable ()Zatemni rezultat kot dvojno'Dodelite spremenljivkoresult = WorksheetFunction.SumIf (Range ("C2: C9"), 150, Range ("D2: D9"))'Pokaži rezultatMsgBox "Skupni rezultat, ki ustreza 150 prodajni kodi, je" & rezultatEnd Sub |
Uporaba SUMIFS
Funkcija SUMIFS je podobna funkciji SUMIF WorksheetFunction, vendar vam omogoča, da preverite več kot eno merilo. V spodnjem primeru želimo sešteti prodajno ceno, če je prodajna oznaka 150 IN je nabavna cena večja od 2. Upoštevajte, da je v tej formuli obseg celic, ki jih je treba sešteti, pred merili. v funkciji SUMIF je zadaj.
123 | Sub MultipleSumIfs ()Obseg ("D10") = Funkcija delovnega lista.SumIfs (Razpon ("D2: D9"), Obseg ("C2: C9"), 150, Razpon ("E2: E9"), "> 2")End Sub |
Uporaba SUMIF z objektom obsega
Objektu Range lahko dodelite skupino celic, nato pa ta predmet Range uporabite z Funkcija delovnega lista predmet.
123456789101112 | Sub TestSumIFRange ()Dim rngCriteria As RangeZatemni rngSum kot obseg'dodelite obseg celicNastavi rngCriteria = Razpon ("C2: C9")Nastavi rngSum = obseg ("D2: D9")"uporabite obseg v formuliObseg ("D10") = Funkcija delovnega lista.SumIf (rngCriteria, 150, rngSum)'sprostite objekte obsegaNastavi rngCriteria = NičNastavi rngSum = NičEnd Sub |
Uporaba SUMIFS na objektih z več obsegi
Podobno lahko uporabite SUMIFS za več objektov obsega.
123456789101112131415 | Sub TestSumMultipleRanges ()Dim rngCriteria1 As RangeZatemni rngCriteria2 kot obsegZatemni rngSum kot obseg'dodelite obseg celicNastavi rngCriteria1 = Razpon ("C2: C9")Nastavi rngCriteria2 = Obseg ("E2: E10")Nastavi rngSum = Obseg ("D2: D10")"uporabite razpone v formuliObseg ("D10") = Funkcija delovnega lista.SumIfs (rngSum, rngCriteria1, 150, rngCriteria2, "> 2")'spustite predmet obsegaNastavi rngCriteria1 = NičNastavi rngCriteria2 = NičNastavi rngSum = NičEnd Sub |
Upoštevajte, da morajo biti merila večja od 2, ker uporabljate znak večji od, v oklepaju.
Formula SUMIF
Ko uporabljate Delovni listFunction.SUMIF če želite vnos na svoj delovni list dodati vsoto, se vrne statična vsota, ne prilagodljiva formula. To pomeni, da ko se vaše številke v Excelu spremenijo, vrednost, ki jo je vrnil Funkcija delovnega lista se ne bo spremenilo.
V zgornjem primeru je postopek sešteval obseg (D2: D9), kjer je koda SaleCode enaka 150 v stolpcu C, rezultat pa je bil zapisan v D10. Kot lahko vidite v vrstici s formulami, je ta rezultat številka in ne formula.
Če se katera koli vrednost spremeni v območju (D2: D9) ali v območju (C2: D9), bo rezultat v D10 NE spremeniti.
Namesto da uporabite Delovni listFunction.SumIf, lahko z VBA uporabite funkcijo SUMIF za celico s pomočjo Formula ali Formula R1C1 metode.
Metoda formule
Metoda formule vam omogoča, da posebej pokažete na vrsto celic, na primer: D2: D10, kot je prikazano spodaj.
123 | Sub TestSumIf ()Razpon ("D10"). Formula R1C1 = "= SUMIF (C2: C9,150, D2: D9)"End Sub |
FormulaR1C1 Metoda
Metoda FormulaR1C1 je bolj prilagodljiva, saj vas ne omejuje na določeno območje celic. Spodnji primer nam bo dal enak odgovor kot zgornji.
123 | Sub TestSumIf ()Razpon ("D10"). Formula R1C1 = "= SUMIF (R [-8] C [-1]: R [-1] C [-1], 150, R [-8] C: R [-1] C ) "End Sub |
Da pa bi bila formula bolj prilagodljiva, bi lahko kodo spremenili takole:
123 | Sub TestSumIf ()ActiveCell.FormulaR1C1 = "= SUMIF (R [-8] C [-1]: R [-1] C [-1], 150, R [-8] C: R [-1] C)"End Sub |
Kjer koli ste na svojem delovnem listu, bo formula nato sestavila celice, ki izpolnjujejo merila neposredno nad njim, in odgovor postavila v vašo ActiveCell. Na obseg znotraj funkcije SUMIF se je treba sklicevati s sintakso vrstice (R) in stolpca (C).
Obe metodi vam omogočata uporabo formul Dynamic Excel v VBA.
Namesto vrednosti bo zdaj v D10 formula.