Tämä opetusohjelma näyttää, kuinka voit käyttää Excel COUNT -toimintoa VBA: ssa
VBA COUNT -toimintoa käytetään laskemaan laskentataulukon solujen määrä, joissa on arvoja. Siihen pääsee VBA: n WorksheetFunction -menetelmällä.
COUNT laskentataulukon toiminto
WorksheetFunction -objektia voidaan käyttää useimpien Excel -toimintojen kutsumiseen, jotka ovat käytettävissä Excelin Lisää toiminto -valintaikkunassa. COUNT -toiminto on yksi niistä.
123 | AlitestilaskuriFunctinoAlue ("D33") = Application.WorksheetFunction.Count (Alue ("D1: D32"))End Sub |
Laskentatoiminnossa voi olla enintään 30 argumenttia. Jokaisen argumentin on viitattava solualueeseen.
Tässä alla olevassa esimerkissä lasketaan, kuinka monta solua arvoilla on soluissa D1 - D9
123 | Alitestitili ()Alue ("D10") = Application.WorksheetFunction.Count (Alue ("D1: D9"))End Sub |
Alla oleva esimerkki laskee, kuinka monta arvoa on sarakkeen D alueella ja sarakkeen F alueella. Jos et kirjoita sovellusobjektia, se oletetaan.
123 | AlatestiCountMultiple ()Alue ("G8") = WorksheetFunction.Count (Alue ("G2: G7"), alue ("H2: H7"))End Sub |
Laskutuloksen määrittäminen muuttujaan
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 | Alivalintalaskuri ()Dim -tulos kokonaislukuna'Määritä muuttujaresult = WorksheetFunction.Count (alue ("H2: H11"))'Näytä tulosMsgBox "Arvojen sisältämien solujen määrä on" & resultEnd Sub |
COUNT alueobjektin kanssa
Voit määrittää Range -objektille soluryhmän ja käyttää sitten Range -objektia LaskentataulukkoToiminto esine.
123456789 | AlatestiCountRange ()Dim rng as Range'määritä solualueAseta rng = alue ("G2: G7")'käytä kaavaaAlue ("G8") = WorksheetFunction.Count (rng)'vapauta etäisyysobjektiAseta rng = ei mitäänEnd Sub |
COUNT useita alueita
Samoin voit laskea, kuinka monta solua on täytetty arvoilla useissa alueobjekteissa.
123456789101112 | Sub TestCountMultipleRanges ()Dim rngA As RangeDim rngB kuin alue'määritä solualueAseta rngA = alue ("D2: D10")Aseta rngB = alue ("E2: E10")'käytä kaavaaAlue ("E11") = WorksheetFunction.Count (rngA, rngB)'vapauta etäisyysobjektiAseta rngA = ei mitäänAseta rngB = ei mitäänEnd Sub |
COUNTAn käyttäminen
Laskenta laskee vain soluissa olevat ARVOT, se ei laske solua, jos solussa on tekstiä. Jos haluat laskea solut, joissa on kaikenlaisia tietoja, meidän on käytettävä COUNTA -funktiota.
123 | AlatestiCountA ()Alue ("B8) = Application.WorksheetFunction.CountA (Alue (" B1: B6 "))End Sub |
Alla olevassa esimerkissä LASKE -funktio palauttaa nollaa, koska sarakkeessa B ei ole arvoja, kun taas se palauttaa 4 sarakkeessa C. COUNTA -funktio kuitenkin laskee solut, joissa on tekstiä, ja palauttaa arvon 5 sarakkeessa B ja palauttaa silti arvon 4 sarakkeessa C.
COUNTBLANKSin käyttäminen
COUNTBLANKS -toiminto laskee vain solualueella olevat tyhjät solut - eli solut, joissa ei ole lainkaan tietoja.
123 | AlatestiCountBlank ()Alue ("B8) = Application.WorksheetFunction.CountBlanks (Alue (" B1: B6 "))End Sub |
Alla olevassa esimerkissä sarakkeessa B ei ole tyhjiä soluja, kun taas sarakkeessa C on yksi tyhjä solu.
COUNTIF -toiminnon käyttäminen
Toinen laskentataulukkotoiminto, jota voidaan käyttää, on COUNTIF -toiminto.
123456 | AlitestilaskentaJos ()Alue ("H14") = WorksheetFunction.CountIf (Alue ("H2: H10"), "> 0")Alue ("H15") = WorksheetFunction.CountIf (Alue ("H2: H10"), "> 100")Alue ("H16") = WorksheetFunction.CountIf (Alue ("H2: H10"), "> 1000")Alue ("H17") = WorksheetFunction.CountIf (Alue ("H2: H10"), "> 10000")End Sub |
Yllä oleva menettely laskee solut, joissa on arvoja, vain jos ehdot täyttyvät - yli 0, yli 100, yli 1000 ja yli 10000. Ehdot on laitettava lainausmerkkeihin, jotta kaava toimii oikein.
WorksheetFunction -toiminnon haitat
Kun käytät LaskentataulukkoToiminto laskeaksesi laskentataulukon alueen arvot, palautetaan staattinen arvo, ei joustava kaava. Tämä tarkoittaa sitä, että kun Excelin luvut muuttuvat, arvo on palauttanut LaskentataulukkoToiminto ei muutu.
Yllä olevassa esimerkissä TestCount on laskenut solut sarakkeessa H, jossa on arvo. Kuten kaavapalkista näet, tämä tulos on luku eikä kaava.
Jos jokin arvo muuttuu siksi alueella (H2: H12), tulokset H14: ssä muuttuvat EI muuttaa.
Käyttämisen sijasta LaskentataulukkoToiminto.Luku, voit käyttää VBA: ta käyttääksesi laskutoimintoa soluun käyttämällä Kaava tai KaavaR1C1 menetelmiä.
Kaavamenetelmän käyttäminen
Kaavamenetelmän avulla voit osoittaa erityisesti solualueelle, esimerkiksi: H2: H12, kuten alla on esitetty.
123 | AlitestilaskentakaavaAlue ("H14"). Kaava = "= Count (H2: H12)"End Sub |
Käyttämällä FormulaR1C1 -menetelmää
FromulaR1C1 -menetelmä on joustavampi, koska se ei rajoita sinua tiettyyn solualueeseen. Alla oleva esimerkki antaa meille saman vastauksen kuin yllä oleva.
123 | Sub TestCountFormula ()Alue ("H14"). Kaava = "= Count (R [-9] C: R [-1] C)"End Sub |
Kaavan joustavuuden parantamiseksi voisimme kuitenkin muuttaa koodia tältä:
123 | Sub TestCountFormula ()ActiveCell.FormulaR1C1 = "= Laske (R [-11] C: R [-1] C)"End Sub |
Missä tahansa olet laskentataulukossasi, kaava laskee sitten sen yläpuolella olevien 12 solun arvot ja sijoittaa vastauksen ActiveCell -laitteeseesi. COUNT -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.
H14: ssä on nyt kaava arvon sijasta.