Šī apmācība parādīs, kā VBA izmantot Excel COUNTIF un COUNTIFS funkcijas
VBA nav līdzvērtīgu funkciju COUNTIF vai COUNTIFS, kuras varat izmantot - lietotājam ir jāizmanto VBA iebūvētās Excel funkcijas, izmantojot WorkSheetFunction objekts.
COUNTIF darblapas funkcija
Objektu WorksheetFunction var izmantot, lai izsauktu lielāko daļu Excel funkciju, kas ir pieejamas Excel dialoglodziņā Funkcijas ievietošana. Funkcija COUNTIF ir viena no tām.
123 | Sub TestCountIf ()Diapazons ("D10") = Application.WorksheetFunction.CountIf (Diapazons ("D2: D9"), "> 5")Beigu apakš |
Iepriekš minētā procedūra skaitīs diapazona (D2: D9) šūnas tikai tad, ja to vērtība ir 5 vai lielāka. Ņemiet vērā, ka, tā kā izmantojat lielākas par zīmi, kritērijiem, kas lielāki par 5, jābūt iekavās.
COUNTIF rezultāta piešķiršana mainīgajam
Iespējams, vēlēsities izmantot formulas rezultātu citur kodā, nevis rakstīt to tieši atpakaļ un Excel diapazonā. Ja tas tā ir, rezultātu varat piešķirt mainīgajam, lai to izmantotu vēlāk savā kodā.
1234567 | Sub AssignSumIfVariable ()Iegūstiet dubultu rezultātu'Piešķiriet mainīgorezultāts = Application.WorksheetFunction.CountIf (Diapazons ("D2: D9"), "> 5")'Parādiet rezultātuMsgBox "Šūnu skaits, kuru vērtība ir lielāka par 5, ir rezultāts"Beigu apakš |
Izmantojot COUNTIFS
Funkcija COUNTIFS ir līdzīga funkcijai COUNTIF WorksheetFunction, taču tā ļauj pārbaudīt vairāk nekā vienu kritēriju. Tālāk sniegtajā piemērā formula aprēķinās šūnu skaitu no D2 līdz D9, kur pārdošanas cena ir lielāka par 6 UN izmaksu cena ir lielāka par 5.
123 | Sub UsingCountIfs ()Diapazons ("D10") = WorksheetFunction.CountIfs (Diapazons ("C2: C9"), "> 6", Diapazons ("E2: E9"), "> 5")Beigu apakš |
COUNTIF izmantošana ar diapazona objektu
Objektam Range varat piešķirt šūnu grupu un pēc tam izmantot šo diapazona objektu ar DarblapaFunkcija objekts.
123456789 | Sub TestCountIFRange ()Dim rngCount kā diapazons"piešķirt šūnu diapazonuIestatīt rngCount = Diapazons ("D2: D9")'izmantojiet diapazonu formulāDiapazons ("D10") = WorksheetFunction.SUMIF (rngCount, "> 5")'atlaidiet diapazona objektusSet rngCount = NekasBeigu apakš |
COUNTIFS izmantošana vairāku diapazonu objektos
Līdzīgi varat izmantot COUNTIFS vairākiem diapazona objektiem.
123456789101112 | Sub TestCountMultipleRanges ()Dim rngCriteria1 kā diapazonsDim rngCriteria2 kā diapazons"piešķirt šūnu diapazonuIestatīt rngCriteria1 = Diapazons ("D2: D9")Iestatīt rngCriteria2 = Diapazons ("E2: E10")'izmantojiet formulas diapazonusDiapazons ("D10") = WorksheetFunction.CountIfs (rngCriteria1, "> 6", rngCriteria2, "> 5")'atlaidiet diapazona objektusSet rngCriteria1 = NekasSet rngCriteria2 = NekasBeigu apakš |
COUNTIF formula
Kad izmantojat WorksheetFunction.COUNTIF lai pievienotu summu darblapas diapazonam, tiek atgriezta statiskā vērtība, nevis elastīga formula. Tas nozīmē, ka, mainoties skaitļiem programmā Excel, vērtība, kuru ir atgriezusi DarblapaFunkcija nemainīsies.
Iepriekš minētajā piemērā procedūra ir saskaitījusi šūnu skaitu ar vērtībām diapazonā (D2: D9), kur pārdošanas cena ir lielāka par 6, un rezultāts tika ievietots D10. Kā redzat formulas joslā, šis rezultāts ir skaitlis, nevis formula.
Ja kāda no vērtībām mainās diapazonā (D2: D9), rezultāts D10 mainīsies NĒ mainīt.
Tā vietā, lai izmantotu WorksheetFunction.SumIf, varat izmantot VBA, lai šūnai lietotu SUMIF funkciju, izmantojot Formula vai FormulaR1C1 metodes.
Formulas metode
Formulas metode ļauj īpaši norādīt uz šūnu diapazonu, piemēram: D2: D9, kā parādīts zemāk.
123 | Sub TestCountIf ()Diapazons ("D10"). FormulaR1C1 = "= COUNTIF (D2: D9," "> 5" ")"Beigu apakš |
FormulaR1C1 metode
FormulaR1C1 metode ir elastīgāka, jo tā neierobežo jūs ar noteiktu šūnu diapazonu. Tālāk sniegtais piemērs sniegs mums tādu pašu atbildi kā iepriekš.
123 | Sub TestCountIf ()Diapazons ("D10"). FormulaR1C1 = "= COUNTIF (R [-8] C: R [-1] C," "> 5" ")Beigu apakš |
Tomēr, lai formula būtu vēl elastīgāka, mēs varētu grozīt kodu, lai tas izskatītos šādi:
123 | Sub TestCountIf ()ActiveCell.FormulaR1C1 = "= COUNTIF (R [-8] C: R [-1] C," "> 5" ")Beigu apakš |
Lai kur jūs atrastos darblapā, formula pēc tam saskaitīs šūnas, kas atbilst kritērijiem tieši virs tās, un ievietos atbildi jūsu ActiveCell. Funkcijas COUNTIF diapazons ir jāatsaucas, izmantojot rindu (R) un kolonnas (C) sintaksi.
Abas šīs metodes ļauj VBA izmantot dinamiskās Excel formulas.
Tagad vērtības D10 vietā būs formula.
Jūsu saites teksts