Ši pamoka parodys, kaip naudoti „Excel COUNT“ funkciją VBA
Funkcija VBA COUNT naudojama skaičiuoti jūsų darbalapio ląstelių, kuriose yra reikšmių, skaičių. Jis pasiekiamas naudojant „WorksheetFunction“ metodą VBA.
COUNT darbalapio funkcija
„WorksheetFunction“ objektu galima iškviesti daugumą „Excel“ funkcijų, kurios pasiekiamos „Excel“ dialogo lange Įterpti funkciją. Funkcija COUNT yra viena iš jų.
123 | Sub TestCountFunctinoDiapazonas ("D33") = Application.WorksheetFunction.Count (Diapazonas ("D1: D32"))Pabaiga Sub |
Funkcijoje COUNT galite turėti iki 30 argumentų. Kiekvienas argumentas turi būti susijęs su langelių diapazonu.
Šiame toliau pateiktame pavyzdyje bus skaičiuojama, kiek ląstelių yra užpildytos reikšmėmis ląstelėse D1 – D9
123 | Antrasis bandymų skaičius ()Diapazonas ("D10") = Application.WorksheetFunction.Count (Diapazonas ("D1: D9"))Pabaiga Sub |
Žemiau pateiktame pavyzdyje bus suskaičiuota, kiek reikšmių yra diapazone D stulpelyje ir F stulpelio diapazone.
123 | Sub TestCountMultiple ()Diapazonas ("G8") = WorksheetFunction.Count (Diapazonas ("G2: G7"), diapazonas ("H2: H7"))Pabaiga Sub |
Skaičiavimo 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 AssignCount ()Neryškus rezultatas kaip sveikasis skaičius'Priskirkite kintamąjįrezultatas = darbo lapasFunkcija.Skaičius (diapazonas ("H2: H11"))'Parodyk rezultatą„MsgBox“ Ląstelių, užpildytų reikšmėmis, skaičius yra „& result“Pabaiga Sub |
COUNT su diapazono objektu
Galite priskirti langelių grupę objektui „Range“, o tada naudoti tą diapazono objektą su Darbo lapas Funkcija objektas.
123456789 | Sub TestCountRange ()Dim rng As Range“priskirti ląstelių diapazonąNustatyti rng = Diapazonas („G2: G7“)'naudokite diapazoną formulėjeDiapazonas ("G8") = WorksheetFunction.Count (rng)“paleiskite diapazono objektąNustatyti rng = niekoPabaiga Sub |
COUNT kelių diapazonų objektai
Panašiai galite suskaičiuoti, kiek langelių yra užpildyti reikšmėmis keliuose diapazono objektuose.
123456789101112 | Sub TestCountMultipleRanges ()Dim rngA As DiapazonasDim rngB kaip diapazonas“priskirti ląstelių diapazonąNustatyti rngA = Diapazonas („D2: D10“)Nustatykite rngB = Diapazonas („E2: E10“)'naudokite diapazoną formulėjeDiapazonas („E11“) = WorksheetFunction.Count (rngA, rngB)“paleiskite diapazono objektąNustatyti rngA = NiekoNustatyti rngB = niekoPabaiga Sub |
Naudojant COUNTA
Skaičiuojant bus skaičiuojamos tik ląstelėse esančios VALUES, jis neskaičiuos langelio, jei langelyje yra teksto. Norėdami suskaičiuoti ląsteles, kuriose yra bet kokio tipo duomenų, turėtume naudoti funkciją COUNTA.
123 | Antrasis TestCountA ()Diapazonas ("B8) = Application.WorksheetFunction.CountA (Diapazonas (" B1: B6 "))Pabaiga Sub |
Žemiau pateiktame pavyzdyje funkcija COUNT grąžintų nulį, nes B stulpelyje nėra reikšmių, o C stulpelyje - 4. Tačiau funkcija COUNTA suskaičiuotų langelius su tekstu ir grąžintų reikšmę 5 B stulpelyje, o C stulpelyje vis tiek pateikia 4 reikšmę.
Naudojant COUNTBLANKS
Funkcija COUNTBLANKS skaičiuos tik tuščias ląstelių diapazono ląsteles - ty ląsteles, kuriose nėra duomenų.
123 | Sub TestCountBlank ()Diapazonas ("B8) = Application.WorksheetFunction.CountBlanks (Diapazonas (" B1: B6 "))Pabaiga Sub |
Žemiau esančiame pavyzdyje B stulpelyje nėra tuščių langelių, o C stulpelyje - vienas tuščias langelis.
Funkcijos COUNTIF naudojimas
Kita darbalapio funkcija, kurią galima naudoti, yra funkcija COUNTIF.
123456 | Sub TestCountIf ()Diapazonas ("H14") = WorksheetFunction.CountIf (Diapazonas ("H2: H10"), "> 0")Diapazonas ("H15") = WorksheetFunction.CountIf (Diapazonas ("H2: H10"), "> 100")Diapazonas ("H16") = WorksheetFunction.CountIf (Diapazonas ("H2: H10"), "> 1000")Diapazonas ("H17") = WorksheetFunction.CountIf (Diapazonas ("H2: H10"), "> 10000")Pabaiga Sub |
Aukščiau aprašyta procedūra skaičiuos langelius, kuriuose yra reikšmių, tik jei kriterijai atitiks - didesnis nei 0, didesnis nei 100, didesnis nei 1000 ir didesnis nei 10000. Kad formulė veiktų teisingai, kriterijus turite įdėti į kabutes.
„WorksheetFunction“ trūkumai
Kai naudojate Darbo lapas Funkcija norint suskaičiuoti savo darbalapio diapazono reikšmes, 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 „TestCount“ suskaičiavo H stulpelio langelius, kuriuose yra reikšmė. Kaip matote formulės juostoje, šis rezultatas yra figūra, o ne formulė.
Jei kuri nors iš verčių pasikeičia diapazone (H2: H12), rezultatai H14 pasikeis NE keistis.
Užuot naudoję WorksheetFunction.Count, naudodami VBA galite taikyti skaičiavimo funkciją langeliui naudodami Formulė arba Formulė R1C1 metodus.
Naudojant formulės metodą
Formulės metodas leidžia konkrečiai nurodyti langelių diapazoną, pvz .: H2: H12, kaip parodyta žemiau.
123 | Sub TestCountFormulaDiapazonas ("H14"). Formulė = "= Count (H2: H12)"Pabaiga Sub |
Naudojant „FormulaR1C1“ metodą
„FromulaR1C1“ metodas yra lankstesnis tuo, kad neapsiriboja tam tikru ląstelių diapazonu. Žemiau pateiktas pavyzdys suteiks mums tą patį atsakymą, kaip ir aukščiau.
123 | Sub TestCountFormula ()Diapazonas ("H14"). Formulė = "= Count (R [-9] C: R [-1] C)"Pabaiga Sub |
Tačiau, kad formulė būtų lankstesnė, kodą galėtume pakeisti taip:
123 | Sub TestCountFormula ()ActiveCell.FormulaR1C1 = "= Skaičius (R [-11] C: R [-1] C)"Pabaiga Sub |
Kad ir kur esate savo darbalapyje, formulė suskaitys reikšmes 12 langelių tiesiai virš jo ir įdės atsakymą į „ActiveCell“. Funkcijos COUNT diapazonas turi būti nurodytas naudojant eilutės (R) ir stulpelio (C) sintaksę.
Abu šie metodai leidžia naudoti dinamines „Excel“ formules VBA.
Dabar H14 vietoje formulės bus formulė.