VBA SUMIF i SUMIFS funkcije

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.

wave wave wave wave wave