MS Excel 2003: ingrese un valor en el cuadro de entrada, luego busque en la columna ese valor y copie la fila en una nueva hoja de trabajo para obtener todos los valores coincidentes

Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.

MS Excel 2003: ingrese un valor en el cuadro de entrada, luego busque en la columna ese valor y copie la fila en una nueva hoja de trabajo para obtener todos los valores coincidentes

Este tutorial de Excel muestra cómo escribir una macro que permite a los usuarios ingresar un valor en un cuadro de entrada, buscar ese valor en una columna y copiar filas coincidentes en una nueva hoja de cálculo en Excel 2003 y versiones anteriores (con capturas de pantalla y instrucciones paso a paso). instrucciones paso a paso) ) – instrucciones paso a paso).

Pregunta: En Microsoft Excel 2003/XP/2000/97, ¿cómo escribo una macro para pedirle al usuario que ingrese un valor de búsqueda en el cuadro de entrada? Luego buscará este valor de cadena en toda la columna. Si encuentra esa cadena, ¿copiará la fila completa en una nueva hoja en el mismo archivo?

Por ejemplo,

Quiero ingresar el valor “buzón” en el InputBox. Luego quiero buscar en la columna E celdas que contengan “buzón”. Cuando se encuentra la cadena “buzón”, la fila correspondiente debe copiarse en una hoja nueva.

R: Veamos un ejemplo.

Descargue la hoja de cálculo de Excel (que se muestra a continuación)

En nuestra hoja de cálculo, creamos un botón llamado “Cadena de búsqueda” en Sheet1.Cuando el usuario hace clic en este botón, una macro llama cadena de búsqueda se ejecutará.

Esta macro usará InputBox para solicitar al usuario el valor de búsqueda. Luego buscará el valor en la columna E para ese valor de búsqueda. En este ejemplo, ingresamos “buzón” como valor de búsqueda. Cuando la cadena “buzón” se encuentre en la columna E, la fila correspondiente se copiará en la Hoja2.

Cuando la macro esté completa, aparecerá el cuadro de mensaje anterior.

Si observa la Hoja2, puede ver que solo se ha copiado la fila donde la columna E contiene la cadena “buzón”.

Puede presionar Alt+F11 para ver el código VBA.

codigo macro

El código de la macro se ve así:

Sub SearchForString()

   Dim LSearchRow As Integer
   Dim LCopyToRow As Integer
   Dim LSearchValue As String

   On Error GoTo Err_Execute

   LSearchValue = InputBox("Please enter a value to search for.", "Enter value")

   'Start search in row 4
   LSearchRow = 4

   'Start copying data to row 2 in Sheet2 (row counter variable)
   LCopyToRow = 2

   While Len(Range("A" & CStr(LSearchRow)).Value) > 0

      'If value in column E = LSearchValue, copy entire row to Sheet2
      If Range("E" & CStr(LSearchRow)).Value = LSearchValue Then

         'Select row in Sheet1 to copy
         Rows(CStr(LSearchRow) & ":" & CStr(LSearchRow)).Select
         Selection.Copy

         'Paste row into Sheet2 in next row
         Sheets("Sheet2").Select
         Rows(CStr(LCopyToRow) & ":" & CStr(LCopyToRow)).Select
         ActiveSheet.Paste

         'Move counter to next row
         LCopyToRow = LCopyToRow + 1

         'Go back to Sheet1 to continue searching
         Sheets("Sheet1").Select

      End If

      LSearchRow = LSearchRow + 1

   Wend

   'Position on cell A3
   Application.CutCopyMode = False
   Range("A3").Select

   MsgBox "All matching data has been copied."

   Exit Sub

Err_Execute:
   MsgBox "An error occurred."

End Sub
(Visited 3 times, 1 visits today)