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.