Chris vuole contare le celle che contengono il valore di testo A o il valore di testo B, ovunque nel testo della cella. Se la cella contiene sia A che B, vuole contarla, ma solo una volta. Ad esempio, Chris ha tre celle contenenti “seme di mela”, “albero di mele” e “seme di pesca” e desidera conoscere il numero di cellule che contengono “mela” o “seme”. (La risposta corretta che dovrebbe essere restituita è 3.)

Ci sono molti modi in cui questo può essere affrontato. Nel considerare le soluzioni, ho esaminato solo quelle soluzioni che evitano risposte intermedie, che occupano colonne aggiuntive. La prima soluzione consiste nell’usare la funzione CONTA.SE in questo modo:

=COUNTIF(A1:A9,"apple")+COUNTIF(A1:A9,"seed")

-COUNTIF(A1:A9,"seedapple")-COUNTIF(A1:A9,"appleseed")

La formula conta tutte le celle che contengono “mela” o “seme”

e poi sottrae tutte le celle che contengono “seme” seguito da “mela”

(entrambe le parole sono nella cella) o “mela” seguita da “seme” (le stesse parole in ordine inverso).

Un’altra soluzione, questa un po ‘più breve, si basa sulle funzioni COUNTA e FIND, come mostrato qui:

=COUNTA(A1:A9)-SUMPRODUCT(--(ISERROR(FIND("apple",A1:A9)))

* --ISERROR(FIND("seed",A1:A9)))

La formula conta le celle contenenti valori e poi sottrae tutte quelle celle che non contengono né “mela” né “seme”. Nota che la funzione TROVA fa distinzione tra maiuscole e minuscole, il che significa che viene trovata solo “mela” e non “Mela” o “MELA”. Se hai bisogno di qualcosa che non fa distinzione tra maiuscole e minuscole, sostituisci TROVA con CERCA.

Puoi anche, se preferisci, utilizzare una delle funzioni del database di Excel.

A condizione che tu abbia un’intestazione di colonna per le tue frasi originali, questo non è così difficile da fare e risulta nella formula più breve. Tutto quello che devi fare è impostare una tabella dei criteri corrispondente. Ad esempio, supponiamo che i tuoi dati siano in A1: A9 e che la prima cella della colonna contenga un’intestazione come “Le mie frasi”. In un’altra colonna dovresti mettere la stessa intestazione e poi, nelle due celle direttamente sotto di essa, inserire queste due formule:

apple seed

I criteri specificano che si desidera abbinare tutte le celle che contengono “mela” o “seme” all’interno della cella. Con questa configurazione (presumo che tu abbia posizionato la tabella dei criteri in D1: D3), puoi usare la seguente formula:

=DCOUNTA(A1:A9,1,D1:D3)

Ovviamente, potresti anche utilizzare una formula di matrice (inserita premendo Ctrl + Maiusc + Invio) per ottenere la tua risposta. La seguente è una di queste formule che si basa, ancora una volta, sulle frasi controllate per essere in A1: A9:

=SUM(--((ISNUMBER(FIND("apple",A1:A9))+ISNUMBER(FIND("seed",A1:A9)))>0))

Se preferisci lavorare con le macro, potresti creare una funzione definita dall’utente che restituisca il conteggio per te. Quello che segue è un esempio di quello che funzionerà:

Function FindTwoStrings(rng As Range, s1 As String, _   s2 As String) As Integer     Application.Volatile     If TypeName(rng) <> "Range" Then Exit Function     Dim cell As Range     For Each cell In rng.Cells         If (InStr(1, UCase(cell.Value), UCase(s1), _           vbTextCompare) > 0) Or (InStr(1, UCase(cell.Value), _           UCase(s2), vbTextCompare) > 0) Then _           FindTwoStrings = FindTwoStrings + 1     Next cell End Function

Per usare la funzione potresti usare questa formula in una cella:

=FindTwoStrings(A1:A9,"apple","seed")

_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 (9325) 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: