Jeff ha un foglio di lavoro con un bel po ‘di testo, nella colonna C. Vorrebbe contare le occorrenze di una stringa specifica all’interno della colonna C, ma solo per le righe dispari (1, 3, 5, ecc.) Nei dati. La stringa che sta cercando potrebbe non essere l’intero contenuto della cella e potrebbe verificarsi più volte all’interno di una determinata cella. (Se si verifica 2 o 3 volte in una cella, dovrebbe contare come 2 o 3 occorrenze). Si chiede se esista un modo formulato per farlo, senza ricorrere a una macro.

Un modo per affrontare questo problema è tramite l’uso di una colonna helper. Ad esempio, supponiamo di poter utilizzare la colonna D come colonna helper e la prima cella contenente i dati è la cella C2. (Forse la cella C1 contiene un’intestazione di colonna.) Potresti usare la seguente formula nella cella D2:

=IF(MOD(ROW(),2)=1,(LEN(C2)-LEN(SUBSTITUTE(C2,"my text","")))/LEN("my text"),"")

Tutto quello che devi fare è sostituire la stringa di ricerca (“il mio testo”) con quello che stai cercando. La funzione LEN viene utilizzata due volte, prima per trovare la lunghezza di ciò che si trova nella cella C2 e quindi per sottrarre da essa la lunghezza del testo con tutte le istanze del “mio testo” rimosse. Questo valore viene quindi diviso per la lunghezza di ciò che stai cercando, risultando in quante istanze del testo di ricerca erano nella cella. Si noti che la funzione IF garantisce che venga restituito un valore numerico solo se la riga è una riga con numero dispari.

Puoi copiare questa formula tutte le righe necessarie e quindi sommare la colonna. Il risultato è il numero di volte in cui la stringa viene visualizzata in righe dispari.

Se il layout del foglio di lavoro non ti consente di utilizzare una colonna helper, puoi fare affidamento su una formula che funziona su matrici di dati.

Eccone uno che fa il trucco:

=SUMPRODUCT((LEN(C:C)-LEN(SUBSTITUTE(C:C,"my text","")))/LEN("my text")*ISODD(ROW(C:C)))

Questa formula essenzialmente fa la stessa della formula precedente, tranne per il fatto che la funzione SUMPRODUCT esegue il calcolo internamente per ogni cella nella colonna C. Dovresti rendersi conto che poiché la formula esamina tutta la colonna C, significa che se il tuo testo di ricerca (“il mio testo “) si verifica all’interno di qualsiasi cella non di dati nella colonna (come un’intestazione di colonna), quindi verrà inclusa anche nel totale restituito.

Se decidi di utilizzare una macro, potresti facilmente creare una funzione definita dall’utente che esamina un intervallo di celle e determina il conteggio. Quello che segue è un esempio del tipo di macro che potresti usare:

Function CountInst(rSource As Range, sSearch As String, bCaseInsensitive As Boolean) As Integer     Dim c As Range     Dim iCount As Integer     Dim sTemp1 As String     Dim sTemp2 As String

sTemp2 = sSearch     If bCaseInsensitive Then sTemp2 = LCase(sTemp2)

iCount = 0

For Each c In rSource         If c.Row Mod 2 = 1 Then             sTemp1 = c.Text             If bCaseInsensitive Then sTemp1 = LCase(sTemp1)



iCount = iCount + (Len(sTemp1) - _               Len(Replace(sTemp1, sTemp2, ""))) / Len(sTemp2)

End If     Next c

CountInst = iCount End Function

Per utilizzarlo, tutto ciò che devi fare è fornire un intervallo, ciò che desideri cercare e se desideri che la corrispondenza non faccia distinzione tra maiuscole e minuscole o meno. Ad esempio, se vuoi cercare “il mio testo” senza che il caso abbia importanza, dovresti usare quanto segue:

=CountInst(C2:C99,"my text",TRUE)

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (1514) si applica a Microsoft Excel 2007, 2010, 2013 e 2016.