Jack se pregunta cómo puede buscar una determinada palabra o frase y, en un solo paso, resaltar todas las celdas que la contienen para poder cortarlas o copiarlas y pegarlas en otro lugar.

Seleccionar las celdas que contienen el texto que desea utilizar es bastante fácil; puede utilizar la función estándar Buscar y reemplazar para hacerlo. Siga estos pasos:

  1. Presione Ctrl + F. Excel muestra la pestaña Buscar del cuadro de diálogo Buscar y reemplazar.

  2. Expanda el cuadro de diálogo haciendo clic en el botón Opciones. (Ver figura 1)

  3. En el cuadro Buscar, ingrese el texto que desea buscar.

  4. Utilice los controles del cuadro de diálogo para limitar las coincidencias, según desee.

  5. Haga clic en Buscar todo. El cuadro de diálogo se expande para mostrar todas las coincidencias que se localizaron.

  6. Presione Ctrl + A. Esto selecciona todas las celdas que se encontraron.

  7. Haga clic en Cerrar para cerrar el cuadro de diálogo.

Eso es. Siempre que no haya hecho clic en Coincidir con todo el contenido de la celda en el paso 4, Excel selecciona todas las celdas que contienen el texto que especificó en el paso 3. En ese momento, puede aplicar formato a las celdas, si lo desea.

Por supuesto, podría usar formato condicional para formatear dinámicamente las celdas que contienen el texto que desea resaltar. Todo lo que necesita hacer es configurar una condición que use una fórmula que pruebe la presencia del texto que desea. Esto, por supuesto, no seleccionará todas las celdas que contienen el texto, pero las resaltará para que pueda elegir dónde están.

También puede usar una macro para seleccionar todas las celdas que contienen el texto deseado. El siguiente es uno bastante simple que logra la tarea:

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

Sin embargo, existe un problema con la selección de celdas que necesita reconocer; si las celdas no son contiguas, no puede cortar ni copiar las celdas. Si lo intenta, obtendrá un mensaje de error que indica que el comando no se puede utilizar en varias selecciones. La forma más fácil de copiar el contenido de la celda a una ubicación diferente es, nuevamente, usar 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

Cuando selecciona un rango de celdas y ejecuta esta macro, se le pide que especifique lo que está buscando (el caso es importante) y una dirección de dónde desea copiarlo. Luego, la macro busca todas las celdas que contienen ese valor y copia tanto su dirección como el valor de celda en la dirección inicial que especificó. La macro no realiza muchas comprobaciones de errores; sobrescribirá la información si especifica una dirección de destino que ya tiene información. Además, si especifica una dirección de destino que está dentro del rango que está buscando, la macro puede ejecutarse infinitamente. Definitivamente debe especificar un objetivo que esté fuera del rango que se busca.

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (8963) se aplica a Microsoft Excel 97, 2000, 2002 y 2003. Puede encontrar una versión de este consejo para la interfaz de cinta de Excel (Excel 2007 y posteriores) aquí:

link: / excelribbon-Searching_for_All [Buscando todo].