Se stai usando Excel per analizzare un gruppo di celle contenenti testo, potresti voler determinare il numero di celle che contengono maiuscole, il numero che contengono lettere minuscole e il numero che contengono maiuscole e minuscole.

Esistono due modi per affrontare questa attività: utilizzando una normale formula del foglio di lavoro o definendo la propria funzione definita dall’utente.

Se il testo che vuoi valutare è nella colonna A, a partire dalla cella A1, puoi usare la seguente formula nella cella B1:

=IF(A1>"",IF(EXACT(UPPER(A1),A1),"Upper", IF(EXACT(LOWER(A1),A1),"Lower","Mixed")),"")

La formula controlla se c’è qualcosa in A1. In caso affermativo, utilizza la funzione ESATTO per confrontare il contenuto con varie conversioni del contenuto della cella. La formula restituisce una stringa vuota se la cella A1 è vuota o le parole Superiore, Inferiore o Misto.

Copia la formula verso il basso nella colonna B per quanto necessario, quindi puoi utilizzare il seguente tipo di formula per determinare il conteggio:

=COUNTIF(B:B,"Upper")

Per trovare il conteggio delle celle minuscole o miste, sostituire “Superiore” con “Minuscolo” o “Misto”.

Ovviamente, l’utilizzo di formule in questo modo comporta l’aggiunta di una colonna al foglio di lavoro. C’è un altro approccio di formula che puoi usare che non prevede l’uso di una colonna intermedia in questo modo.

Considera la seguente formula, che restituisce il numero di celle nell’intervallo A1: A100 che contengono solo lettere maiuscole:

=SUMPRODUCT(--(EXACT(A1:A100,UPPER(A1:A100))),--(A1:A100<>""))

Una variazione di questa formula può essere utilizzata per restituire il numero di celle minuscole. L’unica cosa che è cambiata di seguito è l’uso della funzione LOWER invece della funzione UPPER:

=SUMPRODUCT(--(EXACT(A1:A100,LOWER(A1:A100))),--(A1:A100<>""))

Per determinare le celle che contengono lettere maiuscole e minuscole, è necessario creare un mix delle due formule basate su SUMPRODUCT:

=SUMPRODUCT(--(NOT(EXACT(A1:A100,UPPER(A1:A100)))),-- (NOT(EXACT(A1:A100,LOWER(A1:A100)))),--(A1:A100<>""))

Ci sono alcuni svantaggi di queste formule, svantaggi che non sono evidenti nelle formule precedenti. Innanzitutto, se una cella contiene un valore numerico, queste formule contano la cella come maiuscola. Secondo, se una cella contiene un valore di errore, la formula restituisce un errore.

Se hai la necessità di contare i casi abbastanza spesso, probabilmente saresti più servito creando una funzione definita dall’utente che esegue il conteggio per te. Ci sono molti modi per scrivere una tale funzione, ma le linee guida generali sono le seguenti:

Scorri ogni cella di un intervallo Determina se la cella è maiuscola, minuscola o mista Incrementa un contatore Restituisci un valore

La seguente macro è un esempio di come quanto sopra può essere implementato:

Function CountCase(rng As Range, sCase As String) As Long     Dim vValue     Dim lUpper As Long     Dim lMixed As Long     Dim lLower As Long     Dim rCell As Range     lUpper = 0     lLower = 0     lMixed = 0

For Each rCell In rng         If Not IsError(rCell.Value) Then             vValue = rCell.Value             If VarType(vValue) = vbString _                 And Trim(vValue) <> "" Then                 If vValue = UCase(vValue) Then                     lUpper = lUpper + 1                 ElseIf vValue = LCase(vValue) Then                     lLower = lLower + 1                 Else                     lMixed = lMixed + 1                 End If             End If         End If     Next     Select Case UCase(sCase)

Case "U"

CountCase = lUpper         Case "L"

CountCase = lLower         Case "M"

CountCase = lMixed         Case Else             CountCase = CVErr(xlErrValue)

End Select End Function

Determinare se una cella è maiuscola, minuscola o mista è ovviamente il punto cruciale di una macro come questa. Effettuare una tale determinazione utilizza lo stesso processo che è stato fatto nelle formule del foglio di lavoro: confrontare il contenuto della cella con la conversione in maiuscolo o minuscolo di quei contenuti. In questa macro il valore della cella (vValue) viene confrontato con vValue trasformato con la funzione UCase o LCase.

La funzione ignora anche le celle che non ha senso valutare.

Ignora le celle contenenti valori numerici, valori booleani, valori di errore, celle vuote e celle che contengono solo spazi. Se un valore numerico è formattato come testo, la funzione conta quella cella come maiuscola. Per utilizzare questa funzione definita dall’utente, utilizzare una formula come la seguente nel foglio di lavoro:

=COUNTCASE(A1:A100, "L")

Per il primo argomento si utilizza l’intervallo che si desidera valutare. Il secondo argomento è un singolo carattere, L, M o U, che indica il conteggio da restituire. Se usi un altro valore per il secondo argomento, la funzione restituisce un errore.

_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 (3212) si applica a Microsoft Excel 97, 2000, 2002 e 2003. Puoi trovare una versione di questo suggerimento per l’interfaccia a nastro di Excel (Excel 2007 e versioni successive) qui: