VBA SUMIF ir SUMIFS funkcijos

Ši pamoka parodys, kaip naudoti „Excel SUMIF“ ir „SUMIFS“ funkcijas VBA

VBA neturi SUMIF ar SUMIFS funkcijų atitikmenų, kurias galite naudoti - vartotojas turi naudoti integruotas „Excel“ funkcijas VBA, naudodamas „WorkSheetFunction“ objektas.

SUMIF darbalapio funkcija

„WorksheetFunction“ objektu galima iškviesti daugumą „Excel“ funkcijų, kurios pasiekiamos „Excel“ dialogo lange Įterpti funkciją. SUMIF funkcija yra viena iš jų.

123 Antrasis testasSumIf ()Diapazonas ("D10") = Application.WorksheetFunction.SumIf (Diapazonas ("C2: C9"), 150, Diapazonas ("D2: D9"))Pabaiga Sub

Aukščiau aprašyta procedūra pridės diapazono (D2: D9) langelius tik tuo atveju, jei atitinkamas langelis C stulpelyje yra 150.

SUMIF rezultato priskyrimas kintamajam

Galbūt norėsite savo formulės rezultatą naudoti kitoje kodo vietoje, o ne rašyti tiesiai atgal į „Excel“ diapazoną. Tokiu atveju galite priskirti rezultatą kintamajam, kuris bus naudojamas vėliau jūsų kode.

1234567 Sub AssignSumIfVariable ()Neryškus rezultatas kaip dvigubas'Priskirkite kintamąjįrezultatas = darbo lapasFunkcija.SumIf (diapazonas („C2: C9“), 150, diapazonas („D2: D9“))'Parodyk rezultatą„MsgBox“ „Rezultatas, atitinkantis 150 pardavimo kodą, yra„ & result “Pabaiga Sub

Naudojant SUMIFS

Funkcija SUMIFS yra panaši į SUMIF WorksheetFunction, tačiau ji leidžia patikrinti daugiau nei vieną kriterijų. Žemiau pateiktame pavyzdyje mes norime sudaryti pardavimo kainą, jei pardavimo kodas yra 150 IR savikaina yra didesnė nei 2. Atkreipkite dėmesį, kad šioje formulėje sudedamųjų langelių diapazonas yra prieš kriterijus, o SUMIF funkcijoje jis atsilieka.

123 Sub MultipleSumIfs ()Diapazonas ("D10") = WorksheetFunction.SumIfs (diapazonas ("D2: D9"), diapazonas ("C2: C9"), 150, diapazonas ("E2: E9"), "> 2")Pabaiga Sub

SUMIF naudojimas su diapazono objektu

Galite priskirti langelių grupę objektui „Range“, o tada naudoti tą diapazono objektą su Darbo lapas Funkcija objektas.

123456789101112 SubtestasSUMIFRange ()Dim rngCriteria As RangeDim rngSum kaip diapazonas“priskirti ląstelių diapazonąNustatykite rngCriteria = Diapazonas („C2: C9“)Nustatyti rngSum = Diapazonas ("D2: D9")'naudokite diapazoną formulėjeDiapazonas ("D10") = WorksheetFunction.SumIf (rngCriteria, 150, rngSum)“paleiskite diapazono objektusNustatykite rngCriteria = NiekoNustatyti rngSum = NiekoPabaiga Sub

SUMIFS naudojimas kelių diapazonų objektuose

Panašiai galite naudoti SUMIFS keliuose diapazono objektuose.

123456789101112131415 Sub TestSumMultipleRanges ()Dim rngCriteria1 As RangeDim rngCriteria2 kaip diapazonasDim rngSum kaip diapazonas“priskirti ląstelių diapazonąNustatykite rngCriteria1 = Diapazonas („C2: C9“)Nustatykite rngCriteria2 = Diapazonas ("E2: E10")Nustatyti rngSum = Diapazonas („D2: D10“)'naudokite formulės diapazonusDiapazonas ("D10") = WorksheetFunction.SumIfs (rngSum, rngCriteria1, 150, rngCriteria2, "> 2")“paleiskite diapazono objektąNustatyti rngCriteria1 = NiekoNustatykite rngCriteria2 = NiekoNustatyti rngSum = NiekoPabaiga Sub

Atkreipkite dėmesį, kad kadangi naudojate didesnį nei ženklą, kriterijai, didesni nei 2, turi būti skliausteliuose.

SUMIF formulė

Kai naudojate Darbo lapasFunkcija.SUMIF Norėdami pridėti sumą prie savo darbalapio diapazono, grąžinama statinė suma, o ne lanksti formulė. Tai reiškia, kad pasikeitus „Excel“ skaičiams, vertė, kurią grąžino Darbo lapas Funkcija nepasikeis.

Pirmiau pateiktame pavyzdyje procedūra pridėjo diapazoną (D2: D9), kur „SaleCode“ yra lygus 150 C stulpelyje, o rezultatas įrašytas į D10. Kaip matote formulės juostoje, šis rezultatas yra figūra, o ne formulė.

Jei kuri nors iš reikšmių pasikeičia diapazone (D2: D9) arba diapazone (C2: D9), rezultatas D10 bus NE keistis.

Užuot naudoję WorksheetFunction.SumIf, galite naudoti VBA, kad pritaikytumėte SUMIF funkciją langeliui naudodami Formulė arba Formulė R1C1 metodus.

Formulės metodas

Formulės metodas leidžia konkrečiai nurodyti langelių diapazoną, pvz .: D2: D10, kaip parodyta žemiau.

123 Antrasis testasSumIf ()Diapazonas ("D10"). FormulėR1C1 = "= SUMIF (C2: C9,150, D2: D9)"Pabaiga Sub

Formulės R1C1 metodas

„FormulaR1C1“ metodas yra lankstesnis, nes neapsiriboja tam tikru ląstelių diapazonu. Žemiau pateiktas pavyzdys suteiks mums tą patį atsakymą, kaip ir aukščiau.

123 Antrasis testasSumIf ()Diapazonas ("D10"). FormulėR1C1 = "= SUMIF (R [-8] C [-1]: R [-1] C [-1], 150, R [-8] C: R [-1] C ) "Pabaiga Sub

Tačiau, kad formulė būtų lankstesnė, kodą galėtume pakeisti taip:

123 Antrasis testasSumIf ()ActiveCell.FormulaR1C1 = "= SUMIF (R [-8] C [-1]: R [-1] C [-1], 150, R [-8] C: R [-1] C)"Pabaiga Sub

Kad ir kur esate savo darbalapyje, formulė sudeda tiesiogiai virš jos esančius kriterijus atitinkančius langelius ir atsakymą įdeda į „ActiveCell“. Funkcijos SUMIF viduje esantis diapazonas turi būti nurodytas naudojant eilutės (R) ir stulpelio (C) sintaksę.

Abu šie metodai leidžia naudoti dinamines „Excel“ formules VBA.

Dabar vietoj reikšmės D10 bus formulė.

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave