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