Funzioni VBA CONTA.SE e CONTA.SE

Questo tutorial ti mostrerà come utilizzare le funzioni di Excel CONTA.SE e CONTA.SE in VBA

VBA non ha un equivalente delle funzioni CONTA.SE o CONTA.SE che è possibile utilizzare: un utente deve utilizzare le funzioni Excel integrate in VBA utilizzando il Funzione del foglio di lavoro oggetto.

COUNTIF WorksheetFunction

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 CONTA.SE è una di queste.

123 Sub TestCountIf()Range("D10") = Application.WorksheetFunction.CountIf(Range("D2:D9"), ">5")Fine sottotitolo

La procedura sopra conterà solo le celle in Range (D2: D9) se hanno un valore di 5 o maggiore. Si noti che poiché si utilizza un segno di maggiore di, i criteri maggiori di 5 devono essere tra parentesi.

Assegnazione di un risultato CONTA.SE 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 AssignSumIfVariable()Risultato debole come doppio'Assegna la variabilerisultato = Application.WorksheetFunction.CountIf(Range("D2:D9"), ">5")'Mostra il risultatoMsgBox "Il conteggio delle celle con un valore maggiore di 5 è " & risultatoFine sottotitolo

Utilizzo di CONTA.SE

La funzione CONTA.SE è simile alla funzione Foglio di lavoro CONTA.SE ma consente di controllare più di un criterio. Nell'esempio seguente, la formula conterà il numero di celle da D2 a D9 in cui il prezzo di vendita è maggiore di 6 E il prezzo di costo è maggiore di 5.

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

Utilizzo di CONTA.SE 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 TestCountIFRange()Dim rngCount come intervallo'assegna l'intervallo di celleImposta rngCount = Intervallo ("D2: D9")'usa l'intervallo nella formulaIntervallo("D10") = FunzioneFoglioLavoro.SOMMA.SE(rngCount, ">5")'rilascia gli oggetti della gammaImposta rngCount = NienteFine sottotitolo

Utilizzo di COUNTIFS su oggetti a più intervalli

Allo stesso modo, puoi utilizzare COUNTIFS su più oggetti intervallo.

123456789101112 Sub TestCountMultipleRanges()Dim rngCriteria1 As RangeDim rngCriteria2 come Range'assegna l'intervallo di celleImposta rngCriteria1= Intervallo("D2:D9")Imposta rngCriteria2 = Range("E2:E10")'usa gli intervalli nella formulaRange("D10") = WorksheetFunction.CountIfs(rngCriteria1, ">6", rngCriteria2, ">5")'rilascia gli oggetti della gammaSet rngCriteria1 = NienteSet rngCriteria2 = NothingFine sottotitolo

Formula CONTA.SE

Quando usi il Foglio di lavoroFunzione.COUNTIF per aggiungere una somma a 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 ha contato la quantità di celle con valori in Intervallo (D2: D9) dove il prezzo di vendita è maggiore di 6 e il risultato è stato inserito in D10. Come puoi vedere nella barra della formula, questo risultato è una cifra e non una formula.

Se uno qualsiasi dei valori cambia in Intervallo (D2: D9), il risultato in D10 sarà NON modificare.

Invece di usare il Foglio di lavoroFunzione.SumIf, puoi usare VBA per applicare una funzione SOMMA.SE a una cella usando il Formula o FormulaR1C1 metodi.

Metodo della formula

Il metodo della formula consente di puntare in modo specifico a un intervallo di celle, ad esempio: D2: D9 come mostrato di seguito.

123 Sub TestCountIf()Intervallo("D10").FormulaR1C1 ="=COUNTIF(D2:D9, "">5"")"Fine sottotitolo

Metodo FormulaR1C1

Il metodo FormulaR1C1 è 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 TestCountIf()Intervallo("D10").FormulaR1C1 = "=COUNTIF(R[-8]C:R[-1]C,"">5"")"Fine sottotitolo

Tuttavia, per rendere la formula ancora più flessibile, potremmo modificare il codice in questo modo:

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

Ovunque ti trovi nel tuo foglio di lavoro, la formula conterà quindi le celle che soddisfano i criteri direttamente sopra di essa e inserirà la risposta nel tuo ActiveCell. L'intervallo all'interno della funzione CONTA.SE deve essere riferito 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 D10 invece di un valore.

Il testo del tuo link

wave wave wave wave wave