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:

  1. Premi Ctrl + F. Excel visualizza la scheda Trova della finestra di dialogo Trova e sostituisci.

  2. Espandere la finestra di dialogo facendo clic sul pulsante Opzioni. (Vedi figura 1.)

  3. Nella casella Trova, inserisci il testo che desideri trovare.

  4. Utilizzare i controlli nella finestra di dialogo per limitare le corrispondenze, come desiderato.

  5. Fare clic su Trova tutto. La finestra di dialogo viene espansa per mostrare tutte le corrispondenze individuate.

  6. Premi Ctrl + A. Questo seleziona tutte quelle celle che sono state trovate.

  7. 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: