Conteggio di celle contenenti una formula (Microsoft Excel)
Rob si è chiesto se esiste un modo per contare il numero di celle contenenti formule in una riga o colonna. La risposta è abbastanza semplice, utilizzando la funzionalità Vai a di Excel. Segui questi passaggi:
-
Visualizza il foglio di lavoro per il quale desideri un conteggio.
-
Seleziona la riga o la colonna in cui desideri contare le formule.
-
Premi F5 o Ctrl + G. Excel visualizza la finestra di dialogo Vai a.
-
Fare clic sul pulsante Speciale. Excel visualizza la finestra di dialogo Vai a speciale.
(Vedi figura 1.)
-
Assicurati che il pulsante di opzione Formule sia selezionato.
-
Fare clic su OK.
Questo è tutto. Excel seleziona tutte le celle nella riga o nella colonna che contengono formule. (Se salti il passaggio 2, Excel seleziona tutte le formule nell’intero foglio di lavoro.) Nella parte inferiore dello schermo, nella barra di stato, puoi vedere un conteggio del numero di celle selezionate. (Vedi figura 2.)
Figura 2. La barra di stato mostra un conteggio delle celle selezionate.
Se, per qualche motivo, non vedi un conteggio nella barra di stato, dovresti verificare di avere la barra di stato configurata per mostrare i conteggi.
Basta fare clic con il pulsante destro del mouse su qualsiasi punto vuoto sulla barra di stato e scegliere Conteggio dalle opzioni risultanti.
Se stai usando Excel 2013 o una versione più recente, potresti anche usare una formula per capire quante formule ci sono in un intervallo di celle, come mostrato qui:
=SUMPRODUCT(--ISFORMULA(A:A))
Questo esempio restituisce il conteggio di tutte le formule nella colonna A; puoi altrettanto facilmente sostituire un diverso intervallo di celle nella formula. Qualunque sia l’intervallo specificato, non dovrebbe includere la cella in cui si colloca questa particolare formula, che risulterebbe in un riferimento circolare e un probabile errore.
È inoltre possibile, se lo si desidera, utilizzare una macro per determinare il conteggio. L’esempio seguente utilizza lo stesso approccio per determinare un conteggio descritto manualmente nei passaggi precedenti:
Sub CountFormulas1() Dim Source As Range Dim iCount As Integer Set Source = ActiveSheet.Range("A:A") iCount = Source.SpecialCells(xlCellTypeFormulas, 23).Count ActiveSheet.Range("D1") = iCount End Sub
Questa subroutine restituisce, molto rapidamente, un conteggio di tutte le celle contenenti formula nella colonna A e inserisce quel valore nella cella D1.
Sarebbe molto utile se questo approccio potesse essere trasformato in una funzione definita dall’utente, come questa:
Function CountFormulas2(Source As Range) CountFormulas2 = Source.SpecialCells(xlCellTypeFormulas, 23).Count End Function
Tuttavia, non funzionerà. La funzione restituisce sempre il conteggio delle celle nell’intervallo di origine, non il conteggio delle celle che contengono le formule. È un bug esoterico nel VBA di Excel che SpecialCells non funziona nelle funzioni; funziona solo nelle subroutine. Microsoft non ha nemmeno documentato questo (che posso trovare), quindi il mio riferimento ad esso come un “bug” invece che come una “limitazione”.
Tuttavia, esiste una limitazione effettiva a ciò che può fare il metodo SpecialCells: può contenere solo un intervallo fino a 8.192 celle. Puoi analizzare un intervallo molto più ampio (come nel caso in cui osservi un’intera colonna), ma il sottoinsieme risultante, l’intervallo risultante, può contenere solo fino a 8.192 celle. Se ne contiene di più, SpecialCells “fallirà” e restituirà un intervallo (e quindi un conteggio) uguale al numero di celle nell’intervallo originale.
Se desideri creare una funzione definita dall’utente per determinare il conteggio, dovrai fare affidamento su qualcosa di diverso dal metodo SpecialCells.
Ecco un approccio che utilizza la proprietà HasFormula:
Function CountFormulas3(Source As Range) Dim c As Range Dim iCount As Integer iCount = 0 For Each c In Source If c.HasFormula Then iCount = iCount + 1 Next CountFormulas3 = iCount End Function
Se scegli di fare in modo che questa macro valuti un’intera colonna o un’intera riga, preparati ad aspettare un po ‘: potrebbe volerci un po’ prima che la macro passi attraverso ogni cella di una colonna o di una riga. Il metodo SpecialCells è molto più veloce nel derivare i risultati rispetto al passaggio attraverso ciascuna cella.
_Nota: _
Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.
ExcelTips è la tua fonte di formazione economica su Microsoft Excel.
Questo suggerimento (13330) si applica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 e Excel in Office 365.