Questo tutorial ti mostrerà come utilizzare la funzione COUNT di Excel in VBA
La funzione VBA COUNT viene utilizzata per contare il numero di celle nel foglio di lavoro che contengono valori. Vi si accede utilizzando il metodo WorksheetFunction in VBA.
COUNT foglio di lavoroFunzione
L'oggetto WorksheetFunction può essere utilizzato per chiamare la maggior parte delle funzioni di Excel disponibili nella finestra di dialogo Inserisci funzione in Excel. La funzione COUNT è una di queste.
123 | Sub TestCountFunctinoRange("D33") = Application.WorksheetFunction.Count(Range("D1:D32"))Fine sottotitolo |
Puoi avere fino a 30 argomenti nella funzione COUNT. Ciascuno degli argomenti deve fare riferimento a un intervallo di celle.
Questo esempio di seguito conterà quante celle sono popolate con i valori nelle celle da D1 a D9
123 | Conteggio test secondario()Range("D10") = Application.WorksheetFunction.Count(Range("D1:D9"))Fine sottotitolo |
L'esempio seguente conterà quanti valori sono in un intervallo nella colonna D e in un intervallo nella colonna F. Se non si digita l'oggetto Application, verrà assunto.
123 | Sub TestCountMultiplo()Range("G8") = WorksheetFunction.Count(Range("G2:G7"), Range("H2:H7"))Fine sottotitolo |
Assegnazione di un risultato di conteggio a una variabile
Potresti voler utilizzare il risultato della tua formula altrove nel codice piuttosto che scriverlo direttamente in Excel Range. In questo caso, puoi assegnare il risultato a una variabile da utilizzare successivamente nel codice.
1234567 | Sub AssignCount()Risultato debole come numero intero'Assegna la variabilerisultato = WorksheetFunction.Count(Range("H2:H11"))'Mostra il risultatoMsgBox "Il numero di celle popolate con i valori è " & risultatoFine sottotitolo |
COUNT con un oggetto intervallo
È possibile assegnare un gruppo di celle all'oggetto Range e quindi utilizzare quell'oggetto Range con il pulsante Foglio di lavoroFunzione oggetto.
123456789 | Sub TestCountRange()Dim rng come intervallo'assegna l'intervallo di celleImposta rng = Intervallo ("G2: G7")'usa l'intervallo nella formulaIntervallo ("G8") = Funzione Foglio di Lavoro. Conteggio (rng)'rilascia l'oggetto intervalloImposta rng = NienteFine sottotitolo |
COUNT oggetti a intervallo multiplo
Allo stesso modo, puoi contare quante celle sono popolate con valori in più oggetti intervallo.
123456789101112 | Sub TestCountMultipleRanges()Dim rngA come intervalloDim rngB come intervallo'assegna l'intervallo di celleImposta rngA = Intervallo ("D2: D10")Imposta rngB = Intervallo ("E2: E10")'usa l'intervallo nella formulaRange("E11") = WorksheetFunction.Count(rngA, rngB)'rilascia l'oggetto intervalloImposta rngA = NienteImposta rngB = NienteFine sottotitolo |
Usando CONTA
Il conteggio conterà solo i VALORI nelle celle, non conterà la cella se la cella contiene del testo. Per contare le celle che sono popolate con qualsiasi tipo di dati, dovremmo usare la funzione CONTA.VALORI.
123 | Sub TestCountA()Range("B8) = Application.WorksheetFunction.CountA(Range("B1:B6"))Fine sottotitolo |
Nell'esempio seguente, la funzione CONTA.VALORI restituirebbe uno zero poiché non ci sono valori nella colonna B, mentre restituirebbe un 4 per la colonna C. La funzione CONTA.VALORI, tuttavia, conterebbe le celle con Testo e restituirebbe un valore di 5 nella colonna B mentre restituisce ancora un valore di 4 nella colonna C.
Utilizzo di COUNTBLANKS
La funzione COUNTBLANKS conterà solo le celle vuote nell'intervallo di celle, ovvero le celle che non contengono dati.
123 | Sub TestCountBlank()Range("B8) = Application.WorksheetFunction.CountBlanks(Range("B1:B6"))Fine sottotitolo |
Nell'esempio seguente, la colonna B non ha celle vuote mentre la colonna C ha una cella vuota.
Utilizzo della funzione CONTA.SE
Un'altra funzione del foglio di lavoro che può essere utilizzata è la funzione CONTA.SE.
123456 | Sub TestCountIf()Range("H14") = WorksheetFunction.CountIf(Range("H2:H10"), ">0")Range("H15") = WorksheetFunction.CountIf(Range("H2:H10"), ">100")Range("H16") = WorksheetFunction.CountIf(Range("H2:H10"), ">1000")Range("H17") = WorksheetFunction.CountIf(Range("H2:H10"), ">10000")Fine sottotitolo |
La procedura sopra conterà solo le celle con valori in esse se i criteri sono soddisfatti: maggiore di 0, maggiore di 100, maggiore di 1000 e maggiore di 10000. È necessario inserire i criteri tra virgolette affinché la formula funzioni correttamente.
Svantaggi di WorksheetFunction
Quando usi il Foglio di lavoroFunzione per contare i valori in un intervallo nel foglio di lavoro, viene restituito un valore statico, non una formula flessibile. Ciò significa che quando le tue cifre in Excel cambiano, il valore che è stato restituito dal Foglio di lavoroFunzione non cambierà.
Nell'esempio sopra, la procedura TestCount ha contato le celle nella colonna H in cui è presente un valore. Come puoi vedere nella barra della formula, questo risultato è una cifra e non una formula.
Se uno qualsiasi dei valori cambia quindi nell'intervallo (H2: H12), i risultati in H14 saranno NON modificare.
Invece di usare il Foglio di lavoroFunzione.Conteggio, puoi usare VBA per applicare una funzione di conteggio a una cella usando il Formula o FormulaR1C1 metodi.
Usando il metodo delle formule
Il metodo della formula consente di puntare specificamente a un intervallo di celle, ad esempio: H2: H12 come mostrato di seguito.
123 | Sub TestCountFormulaIntervallo ("H14"). Formula = "= Conteggio (H2: H12)"Fine sottotitolo |
Utilizzo del metodo FormulaR1C1
Il metodo FromulaR1C1 è più flessibile in quanto non ti limita a un determinato intervallo di celle. L'esempio seguente ci darà la stessa risposta di quello sopra.
123 | Sub TestCountFormula()Intervallo ("H14"). Formula = "= Conteggio (R[-9]C:R[-1]C)"Fine sottotitolo |
Tuttavia, per rendere la formula più flessibile, potremmo modificare il codice in questo modo:
123 | Sub TestCountFormula()ActiveCell.FormulaR1C1 = "=Count(R[-11]C:R[-1]C)"Fine sottotitolo |
Ovunque tu sia nel tuo foglio di lavoro, la formula conterà quindi i valori nelle 12 celle direttamente sopra di essa e inserirà la risposta nel tuo ActiveCell. È necessario fare riferimento all'intervallo all'interno della funzione COUNT utilizzando la sintassi Riga (R) e Colonna (C).
Entrambi questi metodi consentono di utilizzare formule Excel dinamiche all'interno di VBA.
Ora ci sarà una formula in H14 invece di un valore.