VBA COUNTIF ir COUNTIFS funkcijos

Ši pamoka parodys, kaip naudoti „Excel COUNTIF“ ir „COUNTIFS“ funkcijas VBA

VBA neturi funkcijų COUNTIF arba COUNTIFS, kurias galite naudoti - vartotojas turi naudoti integruotas „Excel“ funkcijas VBA, naudodamas „WorkSheetFunction“ objektas.

COUNTIF darbalapio funkcija

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

123 Sub TestCountIf ()Diapazonas ("D10") = Application.WorksheetFunction.CountIf (Diapazonas ("D2: D9"), "> 5")Pabaiga Sub

Aukščiau pateikta procedūra skaičiuos diapazono (D2: D9) ląsteles tik tuo atveju, jei jų vertė yra 5 ar didesnė. Atkreipkite dėmesį, kad kadangi naudojate didesnį nei ženklą, kriterijai, didesni nei 5, turi būti skliausteliuose.

COUNTIF 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 = Application.WorksheetFunction.CountIf (Diapazonas ("D2: D9"), "> 5")'Parodyk rezultatąMsgBox "Ląstelių, kurių vertė didesnė nei 5, skaičius" ir rezultatasPabaiga Sub

Naudojant COUNTIFS

Funkcija COUNTIFS yra panaši į COUNTIF WorksheetFunction, tačiau ji leidžia patikrinti daugiau nei vieną kriterijų. Žemiau pateiktame pavyzdyje formulė suskaičiuos langelių skaičių nuo D2 iki D9, kur pardavimo kaina yra didesnė nei 6, o savikaina - didesnė nei 5.

123 Sub UsingCountIfs ()Diapazonas ("D10") = WorksheetFunction.CountIfs (Diapazonas ("C2: C9"), "> 6", Diapazonas ("E2: E9"), "> 5")Pabaiga Sub

COUNTIF naudojimas su diapazono objektu

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

123456789 Sub TestCountIFRange ()Dim rngCount kaip diapazonas“priskirti ląstelių diapazonąNustatyti rngCount = Diapazonas („D2: D9“)'naudokite diapazoną formulėjeDiapazonas ("D10") = WorksheetFunction.SUMIF (rngCount, "> 5")“paleiskite diapazono objektusNustatyti rngCount = NiekoPabaiga Sub

COUNTIFS naudojimas kelių diapazonų objektuose

Panašiai galite naudoti COUNTIFS keliuose diapazono objektuose.

123456789101112 Sub TestCountMultipleRanges ()Dim rngCriteria1 As RangeDim rngCriteria2 kaip diapazonas“priskirti ląstelių diapazonąNustatykite rngCriteria1 = Diapazonas ("D2: D9")Nustatykite rngCriteria2 = Diapazonas ("E2: E10")'naudokite formulės diapazonusDiapazonas ("D10") = WorksheetFunction.CountIfs (rngCriteria1, "> 6", rngCriteria2, "> 5")“paleiskite diapazono objektusNustatyti rngCriteria1 = NiekoNustatykite rngCriteria2 = NiekoPabaiga Sub

COUNTIF formulė

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

Anksčiau pateiktame pavyzdyje procedūra apskaičiavo langelių, kurių vertės yra diapazone (D2: D9), kai pardavimo kaina yra didesnė nei 6, kiekį, o rezultatas buvo nurodytas 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), rezultatas bus nurodytas D10 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: D9, kaip parodyta žemiau.

123 Sub TestCountIf ()Diapazonas ("D10"). FormulėR1C1 = "= COUNTIF (D2: D9," "> 5" ")"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 Sub TestCountIf ()Diapazonas ("D10"). FormulėR1C1 = "= COUNTIF (R [-8] C: R [-1] C," "> 5" ")Pabaiga Sub

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

123 Sub TestCountIf ()ActiveCell.FormulaR1C1 = "= COUNTIF (R [-8] C: R [-1] C," "> 5" ")Pabaiga Sub

Kad ir kur esate savo darbalapyje, formulė suskaitys tiesiogiai virš jos esančius kriterijus atitinkančius langelius ir atsakymą įdės į „ActiveCell“. Funkcijos COUNTIF 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ė.

Jūsų nuorodos tekstas

wave wave wave wave wave