Funkcijas VBA SUMIF un SUMIFS

Šī apmācība parādīs, kā VBA izmantot Excel SUMIF un SUMIFS funkcijas

VBA nav SUMIF vai SUMIFS funkciju ekvivalenta, ko varat izmantot - lietotājam ir jāizmanto VBA iebūvētās Excel funkcijas, izmantojot WorkSheetFunction objekts.

SUMIF darblapas funkcija

Objektu WorksheetFunction var izmantot, lai izsauktu lielāko daļu Excel funkciju, kas ir pieejamas Excel dialoglodziņā Funkcijas ievietošana. Funkcija SUMIF ir viena no tām.

123 Sub TestSumIf ()Diapazons ("D10") = Application.WorksheetFunction.SumIf (Diapazons ("C2: C9"), 150, Diapazons ("D2: D9"))Beigu apakš

Iepriekš minētā procedūra saskaitīs šūnas diapazonā (D2: D9) tikai tad, ja atbilstošā šūna kolonnā C = 150.

SUMIF 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 = darblapas funkcija.SumIf (diapazons ("C2: C9"), 150, diapazons ("D2: D9"))'Parādiet rezultātuMsgBox "Kopējais rezultāts, kas atbilst 150 pārdošanas kodam, ir" & resultBeigu apakš

Izmantojot SUMIFS

Funkcija SUMIFS ir līdzīga SUMIF darblapas funkcijai, taču tā ļauj pārbaudīt vairāk nekā vienu kritēriju. Tālāk redzamajā piemērā mēs cenšamies saskaitīt pārdošanas cenu, ja pārdošanas kods ir 150 UN pašizmaksa ir lielāka par 2. Ņemiet vērā, ka šajā formulā pievienojamo šūnu diapazons ir priekšā kritērijiem, bet SUMIF funkcijā tas ir aiz muguras.

123 Sub MultipleSumIfs ()Diapazons ("D10") = WorksheetFunction.SumIfs (Diapazons ("D2: D9"), Diapazons ("C2: C9"), 150, Diapazons ("E2: E9"), "> 2")Beigu apakš

SUMIF izmantošana ar diapazona objektu

Objektam Range varat piešķirt šūnu grupu un pēc tam izmantot šo diapazona objektu ar DarblapaFunkcija objekts.

123456789101112 ApakštestsSumIFRange ()Dim rngCriteria As RangeDim rngSum kā diapazons"piešķirt šūnu diapazonuIestatīt rngCriteria = Diapazons ("C2: C9")Iestatīt rngSum = Diapazons ("D2: D9")'izmantojiet diapazonu formulāDiapazons ("D10") = WorksheetFunction.SumIf (rngCriteria, 150, rngSum)'atlaidiet diapazona objektusIestatīt rngCriteria = NekasSet rngSum = NekasBeigu apakš

SUMIFS izmantošana vairāku diapazonu objektos

Līdzīgi jūs varat izmantot SUMIFS vairākiem diapazona objektiem.

123456789101112131415 Sub TestSumMultipleRanges ()Dim rngCriteria1 kā diapazonsDim rngCriteria2 kā diapazonsDim rngSum kā diapazons"piešķirt šūnu diapazonuIestatīt rngCriteria1 = Diapazons ("C2: C9")Iestatīt rngCriteria2 = Diapazons ("E2: E10")Iestatīt rngSum = Diapazons ("D2: D10")'izmantojiet formulas diapazonusDiapazons ("D10") = WorksheetFunction.SumIfs (rngSum, rngCriteria1, 150, rngCriteria2, "> 2")'atlaidiet diapazona objektuSet rngCriteria1 = NekasSet rngCriteria2 = NekasSet rngSum = NekasBeigu apakš

Ņemiet vērā, ka, tā kā izmantojat lielākas par zīmi, kritērijiem, kas lielāki par 2, jābūt iekavās.

SUMIF formula

Kad izmantojat DarblapaFunkcija.SUMIF lai pievienotu summu darblapas diapazonam, tiek atgriezta statiska summa, 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 pievienojusi diapazonu (D2: D9), kur C slejā SaleCode ir 150, 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) vai diapazonā (C2: D9), rezultāts D10 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: D10, kā parādīts zemāk.

123 Sub TestSumIf ()Diapazons ("D10"). FormulaR1C1 = "= SUMIF (C2: C9,150, D2: D9)"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 TestSumIf ()Diapazons ("D10"). FormulaR1C1 = "= SUMIF (R [-8] C [-1]: R [-1] C [-1], 150, R [-8] C: R [-1] C ) "Beigu apakš

Tomēr, lai padarītu formulu elastīgāku, mēs varētu grozīt kodu šādi:

123 Sub TestSumIf ()ActiveCell.FormulaR1C1 = "= SUMIF (R [-8] C [-1]: R [-1] C [-1], 150, R [-8] C: R [-1] C)"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 savā ActiveCell. Funkcijas SUMIF 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.

wave wave wave wave wave