Dichiarazione IF di Excel per una corrispondenza parziale con il testo (carattere jolly)

  • Condividi Questo
Michael Brown

Cercate di creare un'istruzione IF con testo jolly, ma ogni volta fallisce? Il problema non è nella vostra formula, ma nella funzione stessa: Excel IF non supporta i caratteri jolly. Tuttavia, esiste un modo per farla funzionare per le corrispondenze di testo parziali e questa esercitazione vi insegnerà come.

Ogni volta che si desidera eseguire una corrispondenza parziale o sfumata in Excel, la soluzione più ovvia è quella di utilizzare i caratteri jolly. Ma cosa succede se una funzione specifica da utilizzare non supporta i caratteri jolly? Purtroppo, la funzione IF di Excel è una di queste. Questo è particolarmente deludente se si considera che altre funzioni "condizionali" come COUNTIF, SUMIF e AVERAGEIFS funzionano perfettamente con i caratteri jolly.

Fortunatamente, non è l'ostacolo che può fermare un utente creativo di Excel :) Combinando IF con altre funzioni, è possibile forzare la valutazione di una corrispondenza parziale e ottenere una bella alternativa alla formula jolly IF di Excel.

    Perché la funzione IF di Excel con i caratteri jolly non funziona

    Nella tabella di esempio qui sotto, supponiamo di voler controllare se gli ID della prima colonna contengono la lettera "A". Se si trova, si visualizza "Sì" nella colonna B, altrimenti si visualizza "No".

    Sembra che l'inclusione di un testo jolly nel test logico sia una soluzione semplice:

    =IF(A2="*a*", "Sì", "No")

    Ma purtroppo non funziona: la formula restituisce "No" per tutte le celle, anche quelle che contengono "A":

    Perché un'istruzione IF con caratteri jolly fallisce? A quanto pare, Excel non riconosce i caratteri jolly utilizzati con il segno di uguale o con altri operatori logici. Osservando più da vicino l'elenco delle funzioni che supportano i caratteri jolly, si noterà che la loro sintassi presuppone che il testo del carattere jolly appaia direttamente in un argomento come questo:

    =COUNTIF(A2:A10, "*a*")

    Excel IF contiene testo parziale

    Ora che si conosce il motivo per cui una formula IF con caratteri jolly fallisce, cerchiamo di capire come farla funzionare. A tale scopo, incorporeremo semplicemente una funzione che accetta i caratteri jolly nel test logico di IF, ovvero la funzione COUNTIF:

    SE(COUNTIF( cella , "* testo *"), value_if_true, value_if_false)

    Con questo approccio, IF non ha problemi a comprendere i caratteri jolly e identifica perfettamente le celle che contengono "A" o "a" (poiché COUNTIF non è sensibile alle maiuscole e alle minuscole):

    =IF(COUNTIF(A2, "*a*"), "Sì", "No")

    Questa formula va in B2, o in qualsiasi altra cella della riga 2, e può essere trascinata in tutte le celle necessarie:

    Questa soluzione può essere utilizzata anche per localizzare stringhe di un modello specifico Supponendo che siano validi solo gli ID composti da 2 gruppi di 2 caratteri separati da un trattino, è possibile utilizzare la stringa jolly "??-??" per identificarli:

    =IF(COUNTIF(A2, "??-??"), "Valido", "")

    Come funziona questa formula:

    Per il test logico di IF, utilizziamo la funzione COUNTIF che conta il numero di celle che corrispondono alla stringa jolly specificata. Poiché l'intervallo di criteri è una singola cella (A2), il risultato è sempre 1 (corrispondenza trovata) o 0 (corrispondenza non trovata). Dato che 1 equivale a VERO e 0 a FALSO, la formula restituisce "Valido" (valore_se_vero) quando il conteggio è 1 e una stringa vuota (valore_se_falso) quando il conteggio è 1.è 0.

    IF ISNUMBER Formula di ricerca per le corrispondenze parziali

    Un altro modo per forzare la funzione IF di Excel per le corrispondenze parziali di testo è quello di includere la funzione FIND o SEARCH nel test logico, con la differenza che FIND è sensibile alle maiuscole e minuscole mentre SEARCH non lo è.

    Quindi, a seconda che si voglia trattare le minuscole e le maiuscole come caratteri uguali o diversi, una di queste formule funzionerà a meraviglia:

    Insensibile alle maiuscole e alle minuscole formula per la corrispondenza parziale:

    IF(ISNUMBER(SEARCH(" testo ", cella )), value_if_true, value_if_false)

    Sensibile alle maiuscole e alle minuscole formula per la corrispondenza parziale:

    IF(ISNUMBER(FIND(" testo ", cella )), value_if_true, value_if_false)

    Poiché entrambe le funzioni sono progettate per eseguire una corrispondenza di tipo "cella contiene", i caratteri jolly non sono necessari in questo caso.

    Ad esempio, per rilevare gli ID contenenti "A" o "a", la formula è:

    =IF(ISNUMBER(SEARCH("A", A2)), "Sì", "No")

    Per cercare solo la "A" maiuscola e ignorare la "a", la formula è:

    =IF(ISNUMBER(FIND("A", A2)), "Sì", "No")

    In B6, nella schermata sottostante, si può osservare la differenza del risultato:

    Come funziona questa formula:

    Il cuore della formula è una combinazione di ISNUMBER e SEARCH (o FIND):

    ISNUMBER(SEARCH("A", A2))

    La funzione CERCA cerca il testo specificato ("A" in questo esempio) e restituisce la sua posizione all'interno di una stringa in A2. Se il testo non viene trovato, viene restituito un errore #VALORE. Poiché sia la funzione CERCA che la funzione TROVA sono progettate per eseguire una corrispondenza di tipo "cella contiene", i caratteri jolly non sono necessari in questo caso.

    La funzione ISNUMERO converte un numero in VERO e qualsiasi altro valore, compresi gli errori, in FALSO. Il valore logico passa direttamente al test logico di IF. Nel nostro caso, A2 contiene "A", quindi ISNUMERO restituisce VERO:

    SE(VERO, "Sì", "No")

    Come risultato, IF restituisce il valore impostato per l'opzione valore_se_vero che è "Sì".

    Istruzione IF OR di Excel con caratteri jolly

    Per identificare le celle che contengono una stringa di testo con carattere jolly, è possibile combinare la classica istruzione IF OR con la formula COUNTIF o ISNUMBER SEARCH descritta in precedenza.

    Ad esempio, per cercare "aa" O "bb" in A2 ignorando le lettere maiuscole e restituendo "Sì" se viene trovato uno dei due, utilizzare una delle formule seguenti:

    =IF(OR(ISNUMERO(CERCA("aa", A2)), ISNUMERO(CERCA("bb", A2)), "Sì", "")

    o

    =IF(OR(COUNTIF(A2, "*aa*"), COUNTIF(A2, "*bb*")), "Sì", "")

    Funziona anche la somma di due funzioni COUNTIF. In questo caso, il segno più funziona come l'operatore OR:

    =IF(COUNTIF(A3, "*aa*") + COUNTIF(A3, "*bb*"), "Sì", "")

    Invece di inserire le stringhe jolly nella formula, è possibile inserirle in celle separate, ad esempio D2 e F2, come mostrato nella schermata seguente. Si noti che questi riferimenti di cella sono bloccati con il segno $ in modo che la formula venga copiata correttamente nelle celle sottostanti:

    =IF(OR(COUNTIF(A2, "*"&$D$2& "*"), COUNTIF(A2, "*"&$F$2& "*")), "Sì", "")

    Le formule di cui sopra funzionano bene per 2 corrispondenze parziali, ma se si cercano 3 o più corrispondenze, diventano troppo lunghe. In questo caso, è ragionevole affrontare il compito in modo diverso:

    Fornisce alla funzione SEARCH più sottostringhe in una costante di array, conta i numeri restituiti e controlla se il risultato è maggiore di zero (il che significa che almeno una delle sottostringhe è stata trovata):

    =IF(COUNT(SEARCH({"aa", "bb"}, A2))>0, "Sì", "")

    In questo modo, otterrete esattamente lo stesso risultato con una formula più compatta:

    Formula IF AND di Excel con caratteri jolly

    Quando si desidera verificare se una cella contiene due o più sottostringhe diverse, il modo più semplice è utilizzare la funzione COUNTIFS con i caratteri jolly per il test logico.

    Supponiamo di voler individuare le celle della colonna A che contengono sia "b" che "2". Per farlo, utilizzate "*b*" e "*2*" per i criteri di COUNTIFS e A2 per l'intervallo di criteri:

    =IF(COUNTIFS(A2, "*b*", A2, "*2*"), "Sì", "")

    Un altro modo è quello di utilizzare la formula IF AND insieme a ISNUMBER SEARCH:

    =IF(AND(ISNUMBER(SEARCH("b", A2)), ISNUMBER(SEARCH("2", A2)), "Sì", "")

    Anche se non includiamo alcun carattere jolly in questa formula, funziona come la ricerca di due stringhe jolly ("*b*" e "*2*") nella stessa cella.

    Naturalmente, nulla vieta di inserire i valori di ricerca in celle predefinite, D2 e F2 nel nostro caso, e di fornire i riferimenti di cella alla formula:

    =IF(AND(ISNUMBER(SEARCH($D$2, A2)), ISNUMBER(SEARCH($F$2, A2)), "Yes", "")

    Se si preferisce utilizzare formule più compatte quando possibile, si preferisce l'approccio delle costanti di array. La formula IF COUNT SEARCH è molto simile a quella dell'esempio precedente, ma poiché questa volta entrambe le sottostringhe devono comparire in A2, si controlla se il conteggio è pari a 2:

    =IF(COUNT(SEARCH({"b", "2"}, A2))=2, "Sì", "")

    Questi sono i metodi principali per utilizzare i caratteri jolly nell'istruzione IF in Excel. Se conoscete altre soluzioni, gli altri utenti apprezzeranno sicuramente se condividerete la vostra esperienza nei commenti. Vi ringrazio per la lettura e spero di vedervi sul nostro blog la prossima settimana!

    Eserciziario da scaricare

    Esempi di formula jolly IF di Excel (file .xlsx)

    Michael Brown è un appassionato di tecnologia dedicato con una passione per la semplificazione di processi complessi utilizzando strumenti software. Con oltre un decennio di esperienza nel settore tecnologico, ha affinato le sue competenze in Microsoft Excel e Outlook, nonché in Fogli Google e Documenti. Il blog di Michael è dedicato alla condivisione delle sue conoscenze e competenze con gli altri, fornendo suggerimenti e tutorial facili da seguire per migliorare la produttività e l'efficienza. Che tu sia un professionista esperto o un principiante, il blog di Michael offre spunti preziosi e consigli pratici per ottenere il massimo da questi strumenti software essenziali.