Ricerca di tutto (Microsoft Excel)
Jack si chiede come possa fare una ricerca per una certa parola o frase e, in un solo passaggio, evidenziare tutte le celle che la contengono in modo che possa tagliarle o copiarle e incollarle altrove.
Selezionare le celle contenenti il testo che si desidera utilizzare è piuttosto semplice; puoi usare la funzione standard Trova e sostituisci per farlo. Segui questi passaggi:
-
Premi Ctrl + F. Excel visualizza la scheda Trova della finestra di dialogo Trova e sostituisci.
-
Espandere la finestra di dialogo facendo clic sul pulsante Opzioni. (Vedi figura 1.)
-
Nella casella Trova, inserisci il testo che desideri trovare.
-
Utilizzare i controlli nella finestra di dialogo per limitare le corrispondenze, come desiderato.
-
Fare clic su Trova tutto. La finestra di dialogo viene espansa per mostrare tutte le corrispondenze individuate.
-
Premi Ctrl + A. Questo seleziona tutte quelle celle che sono state trovate.
-
Fare clic su Chiudi per chiudere la finestra di dialogo.
Questo è tutto. Finché non si è fatto clic su Corrispondenza intero contenuto della cella nel passaggio 4, Excel seleziona tutte le celle che contengono il testo specificato nel passaggio 3. È possibile, a quel punto, applicare la formattazione alle celle, se lo si desidera.
Puoi, ovviamente, utilizzare la formattazione condizionale per formattare dinamicamente le celle che contengono il testo che desideri evidenziare. Tutto quello che devi fare è impostare una condizione che utilizzi una formula che verifica la presenza del testo desiderato. Questo, ovviamente, non selezionerà tutte le celle che contengono il testo, ma le evidenzierà in modo da poter scegliere dove si trovano.
Puoi anche usare una macro per selezionare tutte le celle che contengono il testo desiderato. Quello che segue è piuttosto semplice che assolve il compito:
Sub selCellbasedonValue() Dim c As Object Dim u As Range Dim v As Range Dim sInpt As String Set u = ActiveSheet.UsedRange sInpt = InputBox("Enter the search text") If sInpt > "" Then For Each c In u If Instr(LCase(sInpt),LCase(c.Value)) > 0 Then If v Is Nothing Then Set v = Range(c.Address) Else Set v = Union(v, Range(c.Address)) End If End If Next v.Select Set v = Nothing End If Set u = Nothing End Sub
Tuttavia, esiste un problema con la selezione delle celle che è necessario riconoscere: se le celle non sono contigue, non è possibile tagliare o copiare le celle. Se ci provi, riceverai un messaggio di errore che indica che il comando non può essere utilizzato su più selezioni. Il modo più semplice per copiare il contenuto della cella in una posizione diversa è, ancora una volta, utilizzare una macro:
Sub CopyFinds() Dim sSrch As String Dim sFirst As String Dim rPaste As Range Dim i As Integer Dim iLeftC As Integer Dim lTopR As Long Dim c As Object If Selection.Cells.Count = 1 Then MsgBox "Select the range to be searched." Exit Sub End If 'Specify search string sSrch = InputBox(Prompt:="Enter the search text") ' Set the paste address On Error Resume Next Set rPaste = Application.InputBox(Prompt:="Enter the upper-left " & _ "cell address for the paste range", Type:=8) On Error GoTo 0 ' Exit if canceled If TypeName(rPaste) <> "Range" Then Exit Sub ' Upper left cell to be used Set rPaste = rPaste.Range("A1") 'Set where paste will start and headings Application.ScreenUpdating = False lTopR = rPaste.Row iLeftC = rPaste.Column Cells(lTopR, iLeftC) = "Address" Cells(lTopR, iLeftC + 1) = "Cell Value" lTopR = lTopR + 1 'Start copying cell values With Selection Set c = .Find(What:=sSrch, LookAt:=xlPart, MatchCase:=True) If Not c Is Nothing Then sFirst = c.Address Do Cells(lTopR, iLeftC) = c.Address Cells(lTopR, iLeftC + 1) = c.Value Set c = .FindNext(c) lTopR = lTopR + 1 Loop While Not c Is Nothing And c.Address <> sFirst End If End With Application.ScreenUpdating = True Cells(rPaste.Row, rPaste.Column).Select End Sub
Quando selezioni un intervallo di celle ed esegui questa macro, ti viene chiesto di specificare cosa stai cercando (il caso è importante) e un indirizzo di dove vuoi copiarlo. La macro trova quindi tutte le celle che contengono quel valore e copia sia il loro indirizzo che il valore della cella nell’indirizzo iniziale specificato. La macro non esegue molti controlli degli errori; sovrascriverà le informazioni se specifichi un indirizzo di destinazione che contiene già informazioni. Inoltre, se specifichi un indirizzo di destinazione che si trova all’interno dell’intervallo che stai cercando, la macro potrebbe essere eseguita all’infinito. Dovresti assolutamente specificare un obiettivo che è al di fuori dell’intervallo cercato.
_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 (8963) 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: