Jay deve determinare la cella in cui si trova un determinato valore di testo.

Sa di poter utilizzare le funzionalità Trova e sostituisci di Excel per determinare manualmente l’indirizzo delle celle contenenti un valore di testo, ma sta cercando una formula per determinare l’indirizzo delle celle. Si chiede se esiste un modo per cercare parti di testo all’interno di un intervallo e fare in modo che Excel restituisca l’indirizzo della cella in cui si trova il testo.

Ci sono due cose che puoi provare. Innanzitutto, se stai cercando una corrispondenza esatta per il contenuto della cella, puoi utilizzare una formula. La formula di base è questa:

=ADDRESS(MATCH(C2,A:A,0),1)

In questo esempio, la cella C2 contiene il valore che stai cercando e la colonna A è l’intervallo di celle da cercare. La formula restituisce un risultato indipendentemente dalle lettere maiuscole di C2 o dai valori nella colonna A.

Pertanto, se C2 contiene “mela”, la formula corrisponderà positivamente alle celle che contengono “mela”, “Mela” o “MELA”. In effetti, qualsiasi combinazione di capitalizzazione corrisponderà.

Questa formula non restituirà un indirizzo per una cella che contiene ciò che stai cercando in mezzo ad altro testo. Quindi, se stai cercando “mela” (cella C2), non restituirà l’indirizzo di una cella che contiene la frase “mela croccante”. È possibile modificare un po ‘questo comportamento aggiungendo caratteri jolly alla cella di ricerca. Ad esempio, se cerchi “mela”, la formula restituisce l’indirizzo di una cella che contiene “mela”, anche se è preceduta o seguita da altri caratteri.

Va sottolineato che questa formula restituisce solo l’indirizzo della prima cella dell’intervallo che soddisfa i criteri. Se desideri effettivamente gli indirizzi di tutte le celle che soddisfano i criteri, dovrai fare affidamento su una macro. Il seguente è un buon esempio:

Function FindMe(x As Range, y As String) As String     Dim r As Range     Dim sResults As String     Dim sSearch As String

Application.Volatile     sSearch = LCase(y)

For Each r In x         If InStr(1, LCase(CStr(r.Value)), sSearch) > 0 Then             sResults = sResults & r.Address & ", "

End If     Next r     If Len(sResults) > 2 Then         FindMe = Left(sResults, Len(sResults) - 2)

Else         FindMe = ""

End If End Function

Si utilizza la funzione fornendo semplicemente l’intervallo che si desidera cercare insieme a ciò che si desidera cercare:

=FindMe(A:A, "apple")

Se utilizzi un intervallo ampio (come in questo esempio, tutta la colonna A), non sorprenderti se la funzione impiega una notevole quantità di tempo per restituire un risultato. Ciò ha senso, poiché deve cercare in ogni cella dell’intervallo, indipendentemente dal fatto che ci sia qualcosa nella cella o meno.

Inoltre non è necessario utilizzare caratteri jolly con questa funzione; presuppone che si verifichi una corrispondenza se ciò che stai cercando si trova in un punto qualsiasi della cella. Inoltre, non presta attenzione alle maiuscole di ciò che stai cercando o alle maiuscole di qualsiasi cosa nell’intervallo di ricerca.

_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 (10083) si applica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 ed Excel in Office 365. Puoi trovare una versione di questo suggerimento per l’interfaccia del menu precedente di Excel qui: