Funktsioonid VBA SUMIF ja SUMIFS

See õpetus näitab teile, kuidas kasutada VBA Excelis SUMIF ja SUMIFS funktsioone

VBA -l pole samaväärset funktsiooni SUMIF või SUMIFS, mida saate kasutada - kasutaja peab kasutama VBA sisseehitatud Exceli funktsioone, kasutades Töölehe funktsioon objekti.

SUMIF -töölehe funktsioon

Objekti WorksheetFunction abil saab helistada enamikule Exceli funktsioonidele, mis on saadaval Exceli dialoogiboksis Lisa funktsioon. Funktsioon SUMIF on üks neist.

123 AlamkatseSumIf ()Vahemik ("D10") = Application.WorksheetFunction.SumIf (Vahemik ("C2: C9"), 150, vahemik ("D2: D9"))End Sub

Protseduur eespool ainult liitke rakkude Range (D2: D9) Kui kasutatakse vastavat raku veerus C = 150.

SUMIF -i tulemuse määramine muutujale

Võib -olla soovite oma valemi tulemust kasutada mujal koodis, selle asemel, et kirjutada see otse tagasi ja Exceli vahemikku. Sellisel juhul saate tulemuse määrata muutujale, et seda oma koodis hiljem kasutada.

1234567 Sub AssignSumIfVariable ()Tulemus topelt'Määrake muutujaresult = WorksheetFunction.SumIf (Vahemik ("C2: C9"), 150, Vahemik ("D2: D9"))'Näita tulemustMsgBox "150 müügikoodile vastava tulemuse kogusumma on" & resultEnd Sub

SUMIFSi kasutamine

SUMIFS funktsioon on sarnane SUMIF WorksheetFunction kuid see võimaldab teil kontrollida rohkem kui üks kriteeriume. Allolevas näites soovime liita müügihinna, kui müügikood on 150 JA omahind on suurem kui 2. Pange tähele, et selle valemi korral on liidetavate lahtrite vahemik kriteeriumide ees. funktsioonis SUMIF on see taga.

123 Sub MultipleSumIfs ()Vahemik ("D10") = WorksheetFunction.SumIfs (vahemik ("D2: D9"), vahemik ("C2: C9"), 150, vahemik ("E2: E9"), "> 2")End Sub

SUMIF -i kasutamine koos vahemiku objektiga

Objektile Range saate määrata lahtrirühma ja seejärel kasutada seda vahemiku objekti koos TöölehtFunktsioon objekti.

123456789101112 Sub TestSumIFRange ()Dim rngCriteria As RangeDim rngSum kui vahemik'määrake lahtrite vahemikMäära rngCriteria = Vahemik ("C2: C9")Määra rngSum = Vahemik ("D2: D9")'kasutage valemis vahemikkuRange ( "D10") = WorksheetFunction.SumIf (rngCriteria, 150, rngSum)'vabastage vahemiku objektidMäära rngCriteria = Mitte midagiMäära rngSum = Mitte midagiEnd Sub

SUMIFS -i kasutamine mitme vahemiku objektidel

Samamoodi saate kasutada SUMIFS -i mitme vahemiku objektidel.

123456789101112131415 Sub TestSumMultipleRanges ()Dim rngCriteria1 As RangeDim rngCriteria2 kui vahemikDim rngSum kui vahemik'määrake lahtrite vahemikMäära rngCriteria1 = Vahemik ("C2: C9")Määra rngCriteria2 = Vahemik ("E2: E10")Määra rngSum = Vahemik ("D2: D10")'kasutage valemis olevaid vahemikkeVahemik ("D10") = WorksheetFunction.SumIfs (rngSum, rngCriteria1, 150, rngCriteria2, "> 2")'vabastage vahemiku objektMäära rngCriteria1 = Mitte midagiMäära rngCriteria2 = Mitte midagiMäära rngSum = Mitte midagiEnd Sub

Pange tähele, et kuna kasutate suuremat kui märki, peavad kriteeriumid, mis on suuremad kui 2, olema sulgudes.

SUMIFi valem

Kui kasutate TöölehtFunktsioon.SUMIF töölehele vahemikule summa lisamiseks tagastatakse staatiline summa, mitte paindlik valem. See tähendab, et kui teie arvud Excelis muutuvad, siis väärtus, mille on tagastanud TöölehtFunktsioon ei muutu.

Ülaltoodud näites on protseduur lisanud vahemiku (D2: D9), kus müügikood on veerus C 150, ja tulemus kanti väärtuseks D10. Nagu näete valemiribal, on see tulemus joonis ja mitte valem.

Kui ükskõik milline väärtus muutuda kas Range (D2: D9) või Range (C2: D9), tulemuse D10 hakkab MITTE muutus.

Selle asemel, et kasutada TöölehtFunktsioon.SumIf, saate VBA abil rakendada lahtrile SUMIF -funktsiooni, kasutades klahvi Valem või Valem R1C1 meetodeid.

Valemimeetod

Valemimeetod võimaldab teil osutada konkreetselt lahtrite vahemikule, nt: D2: D10, nagu allpool näidatud.

123 AlamkatseSumIf ()Raadius ( "D10"). FormulaR1C1 = "= SUMIF (C2: C9,150, D2: D9)"End Sub

ValemR1C1 meetod

FormulaR1C1 meetod on paindlikum, kuna see ei piira teid määratud lahtrivahemikuga. Allolev näide annab meile sama vastuse nagu ülaltoodud.

123 AlamkatseSumIf ()Vahemik ("D10"). Valem R1C1 = "= SUMIF (R [-8] C [-1]: R [-1] C [-1], 150, R [-8] C: R [-1] C ) "End Sub

Kuid valemi paindlikumaks muutmiseks võiksime koodi muuta järgmiselt:

123 AlamkatseSumIf ()ActiveCell.VormelR1C1 = "= SUMIF (R [-8] C [-1]: R [-1] C [-1], 150, R [-8] C: R [-1] C)"End Sub

Kui te olete oma töölehe valem siis lisada kuni rakud, mis vastavad otse selle kohale ja asetage vastus oma activecell. Funktsiooni SUMIF sees olevale vahemikule tuleb viidata, kasutades rida (R) ja veeru (C) süntaksit.

Mõlemad meetodid võimaldavad teil VBA -s kasutada dünaamilisi Exceli valemeid.

Nüüd on väärtuse D10 asemel valem.

wave wave wave wave wave