Ricerca di un valore utilizzando una funzione (Microsoft Excel)
Thor si chiede se esiste un modo per eseguire una ricerca senza dover specificare una colonna o una riga e fare in modo che il risultato sia l’indirizzo della cella in cui si trova il valore. Ad esempio, vuole cercare un valore (come 345 o “il mio testo”) e fare in modo che la funzione cerchi tutte le celle in tutti i fogli di lavoro nella cartella di lavoro e restituisca l’indirizzo completo della cella in cui è stato trovato il valore.
L’approccio che utilizzi sarà dettato dall’intervallo che desideri cercare.
Se vuoi cercare nello stesso foglio di lavoro su cui vuoi visualizzare la risposta, puoi usare una formula, come la seguente:
=ADDRESS(MAX(ROW(1:5)(A1:E5="my text")), MAX(COLUMN(A1:E1)(A1:E5="my text")),4)
Questo dovrebbe essere inserito come una formula di matrice (premere Ctrl + Maiusc + Invio) e cerca solo nell’intervallo A1: E5. È possibile, se lo si desidera, modificare l’intervallo regolando la formula in modo appropriato.
Un’area di ricerca più ampia sarebbe guardare un intero foglio di lavoro. Questo può ancora essere fatto utilizzando una formula di matrice, come la seguente:
=ADDRESS(MAX(ROW(Sheet1!1:65000)(IF(Sheet1!1:65000=$A$1,1,0))), MAX(COLUMN(Sheet1!$1:$65000)IF(Sheet1!1:65000=$A$1,1,0)))
La formula presuppone che ciò che stai cercando sia archiviato nella cella A1.
È necessario modificare la designazione Sheet1 nel nome del foglio di lavoro che si desidera cercare.
Se si desidera cercare un intervallo più ampio, ad esempio tutti i fogli di lavoro in una cartella di lavoro, la soluzione migliore è utilizzare una macro che richiama la funzione Trova in Excel.
Function FindAddr(vValue As Variant) Dim wks As Worksheet Dim rCell As Range Dim bFound As Boolean bFound = False For Each wks In ActiveWorkbook.Worksheets With wks Set rCell = .Cells.Find _ (What:=vValue, After:=.Cells(1), _ LookIn:=xlValues, LookAt:=xlWhole, _ SearchOrder:=xlByRows, _ SearchDirection:=xlNext, _ MatchCase:=False) If Not rCell Is Nothing Then bFound = True Exit For End If End With Next If bFound Then FindAddr = wks.Name & "!" & _ rCell.Address(False, False) Else FindAddr = "Not Found" End If Set wks = Nothing Set rCell = Nothing End Function
Questa funzione è progettata per essere chiamata da un’altra macro, che le passa tutto ciò che deve essere cercato nel parametro vValue. La funzione restituisce l’indirizzo completo (incluso il nome del foglio di lavoro) della prima corrispondenza o restituisce “Non trovato” se non c’era corrispondenza.
_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 (11524) si applica a Microsoft Excel 2007, 2010, 2013 e 2016.
Puoi trovare una versione di questo suggerimento per la vecchia interfaccia del menu di Excel qui: