Ovaj će vam vodič pokazati kako koristiti funkcije Excel SUMIF i SUMIFS u VBA
VBA nema ekvivalent SUMIF ili SUMIFS funkcija koje možete koristiti - korisnik mora koristiti ugrađene Excel funkcije u VBA koristeći Funkcija radnog lista objekt.
Funkcija radnog lista SUMIF
Objekt WorksheetFunction može se koristiti za pozivanje većine Excel funkcija koje su dostupne u dijaloškom okviru Umetni funkciju u Excelu. Funkcija SUMIF jedna je od njih.
123 | Sub TestSumIf ()Raspon ("D10") = Application.WorksheetFunction.SumIf (Raspon ("C2: C9"), 150, Raspon ("D2: D9"))Kraj podm |
Gore navedeni postupak zbrajat će ćelije u rasponu (D2: D9) samo ako je odgovarajuća ćelija u stupcu C = 150.
Dodjeljivanje rezultata SUMIF varijabli
Možda ćete htjeti koristiti rezultat svoje formule na drugom mjestu u kodu, a ne pisati ga izravno u Excel raspon. U tom slučaju rezultat možete dodijeliti varijabli koja će se kasnije koristiti u vašem kodu.
1234567 | Sub AssignSumIfVariable ()Zatamnite rezultat kao dvostruki'Dodijelite varijabluresult = WorksheetFunction.SumIf (Raspon ("C2: C9"), 150, Raspon ("D2: D9"))'Pokaži rezultatMsgBox "Ukupan rezultat koji odgovara 150 prodajnom kodu je" & rezultatKraj podm |
Korištenje SUMIFS -a
Funkcija SUMIFS slična je funkciji SUMIF WorksheetFunction, ali vam omogućuje provjeru više od jednog kriterija. U donjem primjeru nastojimo zbrajati prodajnu cijenu ako je šifra prodaje 150 I cijena koštanja veća od 2. Uočite da je u ovoj formuli raspon ćelija za zbrajanje ispred kriterija, dok u funkciji SUMIF je iza.
123 | Sub MultipleSumIfs ()Raspon ("D10") = Funkcija radnog lista.SumIfs (Raspon ("D2: D9"), Raspon ("C2: C9"), 150, Raspon ("E2: E9"), "> 2")Kraj podm |
Korištenje SUMIF -a s objektom raspona
Objektu Range možete dodijeliti skupinu ćelija, a zatim koristiti taj objekt Range s Funkcija radnog lista objekt.
123456789101112 | Sub TestSumIFRange ()Dim rngCriteria As RangeDim rngSum kao raspon'dodijeliti raspon ćelijaPostavi rngCriteria = Raspon ("C2: C9")Postavi rngSum = Raspon ("D2: D9")'upotrijebite raspon u formuliRaspon ("D10") = Funkcija radnog lista.SumIf (rngCriteria, 150, rngSum)'otpustite objekte rasponaPostavite rngCriteria = NištaPostavi rngSum = NištaKraj podm |
Korištenje SUMIFS -a na objektima više raspona
Slično, možete koristiti SUMIFS na više objekata raspona.
123456789101112131415 | Sub TestSumMultipleRanges ()Dim rngCriteria1 As RangeDim rngCriteria2 as RangeDim rngSum kao raspon'dodijeliti raspon ćelijaPostavi rngCriteria1 = Raspon ("C2: C9")Postavi rngCriteria2 = Raspon ("E2: E10")Postavi rngSum = Raspon ("D2: D10")'koristite raspone u formuliRaspon ("D10") = Funkcija radnog lista.SumIfs (rngSum, rngCriteria1, 150, rngCriteria2, "> 2")'otpustite objekt rasponaPostavite rngCriteria1 = NištaPostavite rngCriteria2 = NištaPostavi rngSum = NištaKraj podm |
Primijetite da budući da koristite znak veći od, kriteriji veći od 2 moraju biti unutar zagrada.
SUMIF Formula
Kada koristite Funkcija radnog lista.SUMIF za dodavanje zbroja rasponu na vašem radnom listu vraća se statički zbroj, a ne fleksibilna formula. To znači da kada se vaše brojke u Excelu promijene, vrijednost koju je vratio Funkcija radnog lista neće se promijeniti.
U gornjem primjeru, postupak je zbrajao raspon (D2: D9) gdje je SaleCode jednak 150 u stupcu C, a rezultat je stavljen u D10. Kao što možete vidjeti na traci s formulama, ovaj rezultat je brojka, a ne formula.
Ako se bilo koja od vrijednosti promijeni u rasponu (D2: D9) ili rasponu (C2: D9), rezultat u D10 će NE promijeniti.
Umjesto da koristite Radni listFunction.SumIf, možete koristiti VBA za primjenu funkcije SUMIF na ćeliju pomoću Formula ili Formula R1C1 metodama.
Metoda formule
Metoda formule omogućuje vam da posebno pokažete na niz ćelija, na primjer: D2: D10 kao što je prikazano u nastavku.
123 | Sub TestSumIf ()Raspon ("D10"). Formula R1C1 = "= SUMIF (C2: C9,150, D2: D9)"Kraj podm |
FormulaR1C1 metoda
Metoda FormulaR1C1 fleksibilnija je jer vas ne ograničava na zadani raspon ćelija. Primjer u nastavku dat će nam isti odgovor kao i prethodni.
123 | Sub TestSumIf ()Raspon ("D10"). Formula R1C1 = "= SUMIF (R [-8] C [-1]: R [-1] C [-1], 150, R [-8] C: R [-1] C ) "Kraj podm |
Međutim, kako bismo formulu učinili fleksibilnijom, kôd bismo mogli promijeniti tako da izgleda ovako:
123 | Sub TestSumIf ()ActiveCell.FormulaR1C1 = "= SUMIF (R [-8] C [-1]: R [-1] C [-1], 150, R [-8] C: R [-1] C)"Kraj podm |
Gdje god se nalazili na svom radnom listu, formula će zatim zbrajati ćelije koje zadovoljavaju kriterije izravno iznad nje i odgovor postaviti u vašu ActiveCell. Raspon unutar funkcije SUMIF mora se pozvati pomoću sintakse Redak (R) i Stupac (C).
Obje ove metode omogućuju vam korištenje Dynamic Excel formula unutar VBA.
U D10 sada će umjesto vrijednosti biti formula.