VBA COUNTIF- ja COUNTIFS -toiminnot

Tämä opetusohjelma näyttää, kuinka voit käyttää Excel COUNTIF- ja COUNTIFS -toimintoja VBA: ssa

VBA: lla ei ole vastaavia COUNTIF- tai COUNTIFS -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.

COUNTIF -laskentataulukkotoiminto

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

123 AlitestilaskentaJos ()Alue ("D10") = Application.WorksheetFunction.CountIf (Alue ("D2: D9"), "> 5")End Sub

Yllä oleva menettely laskee alueen (D2: D9) solut vain, jos niiden arvo on 5 tai suurempi. Huomaa, että koska käytät suurempaa kuin -merkkiä, yli 5: n ehtojen on oltava suluissa.

COUNTIF -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 = Application.WorksheetFunction.CountIf (Alue ("D2: D9"), "> 5")'Näytä tulosMsgBox "Solujen määrä, joiden arvo on suurempi kuin 5, on" & resultEnd Sub

Käyttämällä COUNTIFS

COUNTIFS -toiminto on samanlainen kuin COUNTIF WorksheetFunction, mutta sen avulla voit tarkistaa useamman kuin yhden kriteerin. Alla olevassa esimerkissä kaava laskee D2: n ja D9: n solujen lukumäärän, joissa myyntihinta on yli 6 JA kustannushinta on yli 5.

123 Sub UsingCountIfs ()Alue ("D10") = WorksheetFunction.CountIfs (Alue ("C2: C9"), "> 6", Alue ("E2: E9"), "> 5")End Sub

COUNTIF: n käyttäminen alueobjektin kanssa

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

123456789 AlatestiCountIFRange ()Dim rngCount as Range'määritä solualueAseta rngCount = Alue ("D2: D9")'käytä kaavaaAlue ("D10") = WorksheetFunction.SUMIF (rngCount, "> 5")'vapauta etäisyysobjektitAseta rngCount = ei mitäänEnd Sub

COUNTIFS: n käyttäminen usean alueen kohteissa

Samoin voit käyttää COUNTIFS -arvoa useilla alueobjekteilla.

123456789101112 Sub TestCountMultipleRanges ()Dim rngCriteria1 As RangeDim rngCriteria2 kuin alue'määritä solualueAseta rngCriteria1 = Alue ("D2: D9")Aseta rngCriteria2 = Alue ("E2: E10")'käytä kaavan alueitaAlue ("D10") = WorksheetFunction.CountIfs (rngCriteria1, "> 6", rngCriteria2, "> 5")'vapauta etäisyysobjektitAseta rngCriteria1 = Ei mitäänAseta rngCriteria2 = Ei mitäänEnd Sub

COUNTIF -kaava

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

Yllä olevassa esimerkissä menettely on laskenut solujen määrän, joiden arvot ovat alueella (D2: D9), joissa myyntihinta on suurempi kuin 6, ja tulos laskettiin arvoon D10. Kuten kaavapalkista näet, tämä tulos on luku eikä kaava.

Jos jokin arvoista muuttuu alueella (D2: D9), tulos kohdassa D10 muuttuu 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: D9, kuten alla on esitetty.

123 AlitestilaskentaJos ()Alue ("D10"). KaavaR1C1 = "= COUNTIF (D2: D9," "> 5" ")"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 AlitestilaskentaJos ()Alue ("D10"). KaavaR1C1 = "= COUNTIF (R [-8] C: R [-1] C," "> 5" ")"End Sub

Jotta kaava olisi kuitenkin joustavampi, voimme muuttaa koodia tältä:

123 AlitestilaskentaJos ()ActiveCell.FormulaR1C1 = "= COUNTIF (R [-8] C: R [-1] C," "> 5" ")"End Sub

Missä tahansa olet laskentataulukossasi, kaava laskee solut, jotka täyttävät kriteerit suoraan sen yläpuolella, ja sijoittaa vastauksen ActiveCellisi. COUNTIF -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.

Linkkisi teksti

wave wave wave wave wave