VBA SUMIF- ja SUMIFS -toiminnot

Tämä opetusohjelma näyttää, miten voit käyttää Excel SUMIF- ja SUMIFS -toimintoja VBA: ssa

VBA: lla ei ole vastaavia SUMIF- tai SUMIFS -toimintoja, joita voit käyttää - käyttäjän on käytettävä VBA: n sisäänrakennettuja Excel -toimintoja käyttämällä WorkSheetFunction esine.

SUMIF -laskentataulukko Toiminto

WorksheetFunction -objektia voidaan käyttää useimpien Excel -toimintojen kutsumiseen, jotka ovat käytettävissä Excelin Lisää toiminto -valintaikkunassa. SUMIF -toiminto on yksi niistä.

123 AlatestiSumIf ()Alue ("D10") = Application.WorksheetFunction.SumIf (Alue ("C2: C9"), 150, Alue ("D2: D9"))End Sub

Yllä oleva menettely laskee alueen (D2: D9) solut yhteen vain, jos vastaava sarake C = 150.

SUMIF -tuloksen määrittäminen muuttujalle

Voit halutessasi käyttää kaavan tulosta muualla koodissa sen sijaan, että kirjoitat sen suoraan takaisin Excel -alueelle. Jos näin on, voit määrittää tuloksen muuttujalle käytettäväksi myöhemmin koodissasi.

1234567 Sub AssignSumIfVariable ()Himmennä tulos tuplana'Määritä muuttujaresult = WorksheetFunction.SumIf (Alue ("C2: C9"), 150, Alue ("D2: D9"))'Näytä tulosMsgBox "150 myyntikoodia vastaavan tuloksen kokonaismäärä on" & resultEnd Sub

SUMIFSin käyttö

SUMIFS -toiminto on samanlainen kuin SUMIF WorksheetFunction, mutta sen avulla voit tarkistaa useamman kuin yhden kriteerin. Alla olevassa esimerkissä aiomme lisätä myyntihinnan, jos myyntikoodi on 150 JA Kustannushinta on suurempi kuin 2. Huomaa, että tässä kaavassa lisättävien solujen alue on ehtojen edessä, kun taas SUMIF -toiminnossa se on takana.

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

SUMIFin käyttö alueobjektin kanssa

Voit määrittää Range -objektille soluryhmän ja käyttää sitten Range -objektia LaskentataulukkoToiminto esine.

123456789101112 AlatestiSumIFRange ()Dim rngCriteria As RangeDim rngSum as Range'määritä solualueAseta rngCriteria = Range ("C2: C9")Aseta rngSum = Alue ("D2: D9")'käytä kaavaaAlue ("D10") = WorksheetFunction.SumIf (rngCriteria, 150, rngSum)'vapauta etäisyysobjektitAseta rngCriteria = Ei mitäänAseta rngSum = Ei mitäänEnd Sub

SUMIFSin käyttö usean alueen kohteissa

Samoin voit käyttää SUMIFSia useilla alueobjekteilla.

123456789101112131415 AlatestiSumMultipleRanges ()Dim rngCriteria1 As RangeDim rngCriteria2 kuin alueDim rngSum as Range'määritä solualueAseta rngCriteria1 = Alue ("C2: C9")Aseta rngCriteria2 = Alue ("E2: E10")Aseta rngSum = Alue ("D2: D10")'käytä kaavan alueitaAlue ("D10") = WorksheetFunction.SumIfs (rngSum, rngCriteria1, 150, rngCriteria2, "> 2")'vapauta etäisyysobjektiAseta rngCriteria1 = Ei mitäänAseta rngCriteria2 = Ei mitäänAseta rngSum = Ei mitäänEnd Sub

Huomaa, että koska käytät suurempaa kuin -merkkiä, yli 2: n ehtojen on oltava suluissa.

SUMIF -kaava

Kun käytät Tehtävä.SUMIF summan lisäämiseksi laskentataulukon alueeseen palautetaan staattinen summa, ei joustava kaava. Tämä tarkoittaa sitä, että kun Excelin luvut muuttuvat, arvo on palauttanut LaskentataulukkoToiminto ei muutu.

Yllä olevassa esimerkissä menettely on lisännyt alueen (D2: D9), jossa SaleCode on 150 sarakkeessa C, ja tulos merkittiin kohtaan D10. Kuten kaavapalkista näet, tämä tulos on luku eikä kaava.

Jos jokin arvo muuttuu joko alueella (D2: D9) tai alueella (C2: D9), D10: n tulos EI muuttaa.

Käyttämisen sijasta Tehtävä.SumIf, voit käyttää VBA: ta SUMIF -toiminnon käyttämiseen solussa käyttämällä Kaava tai KaavaR1C1 menetelmiä.

Kaavan menetelmä

Kaavamenetelmän avulla voit osoittaa erityisesti solualueelle, esimerkiksi: D2: D10, kuten alla on esitetty.

123 AlatestiSumIf ()Alue ("D10"). KaavaR1C1 = "= SUMIF (C2: C9,150, D2: D9)"End Sub

FormulaR1C1 -menetelmä

FormulaR1C1 -menetelmä on joustavampi, koska se ei rajoita sinua tiettyyn solualueeseen. Alla oleva esimerkki antaa meille saman vastauksen kuin yllä oleva.

123 AlatestiSumIf ()Alue ("D10"). KaavaR1C1 = "= SUMIF (R [-8] C [-1]: R [-1] C [-1], 150, R [-8] C: R [-1] C ) "End Sub

Kaavan joustavuuden parantamiseksi voisimme kuitenkin muuttaa koodia tältä:

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

Missä tahansa olet laskentataulukossasi, kaava lisää sitten solut, jotka täyttävät kriteerit suoraan sen yläpuolella, ja sijoittaa vastauksen ActiveCellisi. SUMIF -toiminnon sisällä olevaan alueeseen on viitattava rivin (R) ja sarakkeen (C) syntaksilla.

Molempien näiden menetelmien avulla voit käyttää dynaamisia Excel -kaavoja VBA: ssa.

D10: ssä on nyt kaava arvon sijaan.

wave wave wave wave wave