Macro para buscar una linea y copiarla a otra

Hola! Necesito tu ayuda... Tengo un gran archivo de excel con 6 columnas de información y necesito que al ingresar un dato me busque dentro todo el archivo pero que no solo me encuentre la celda donde esta el dato que búsqueda, sino que me seleccione la linea donde el dato fue encontrado (PERO unicamente las 6 columnas de información, ejemplo: si el dato esta en la linea 17, que me copie B:17, C:17, D:17, E:17, F:17 y G:17 a las celdas B:15, C:15, D:15, E:15, F:15 y G:15 (las 6 columnas de la fila 15 serian como un "display" de la búsqueda). Hasta ahorita solo tengo este código para la búsqueda (pero solo me lleva a la celda donde esta el dato que ingreso)
Private Sub CommandButton1_Click()
Dim n As Range
palabra_a_buscar = InputBox("Key your entry", "Search Style")
Set n = Cells.Find(What:=palabra_a_buscar)
If n Is Nothing Then
MsgBox "Your entry was not found. Sorry, please check your entries"
Else
Range(n.Address).Select
MsgBox "Here you have your fucking searching " & UCase(palabra_a_buscar) & "."
End If
Set n = Nothing
End Sub
Mil gracias de antemano y te dejo mi correo por si puedes mandarme más información o preguntarme más detallamente por si no me explique muy bien,
Saludos,

1 respuesta

Respuesta
1
El correo no me lo has dejado (tampoco importa) respecto a tu consulta, necesitamos saber en que Col estas buscando y entonces es muy sencilla la selección copia y pega.
Aclarame si buscas en alguna Columna definida el dato o es en toda la hoja, porque el código varía mucho.
>Un saludo
>Julio
Hola gracias por tu interés... tienes razón, olvide mi correo... [email protected] / [email protected]
y con respecto al tipo de búsqueda... la verdad es una búsqueda general... fíjate que he estado pensando y creo que el código que te mande ya no me funciona porque ese código unicamente me busca un dato... y según lo que necesito es que 1ero, me busque un dato, luego me filtre toda hoja con ese dato y que al final pueda buscar otro dato dentro de la información filtrada... dejame explicarte más detalladamente... las 6 columnas que te mencionaba son (B)"Customer Name", (C) "Customer Number", (D) "Hierarchy Number", (E) "Style Number", (F) "Quote Number", (G) "To expire on date"... para explicarte un poco mejor... necesito tener un "bottom" que me muestre un INPUTBOX donde me pida un "customer number" y que me filtre toda la hoja con ese numero... (que me muestre solo las lineas que contengan ese numero)... luego de eso, debido a que hay mucha información para cada "customer number", es decir, el filtro quedaría demasiado grande... me gustaría que después que la macro me filtre la información, me muestre otro INPUTBOX donde me pida un "style number" para ser buscado y de esa manera encuentro la linea que necesito... pero no quiero que solo me lleve a la celda donde esta el dato que busque... sino que me copie las 6 columnas de información de esa linea (por eso te ponía de ejemplo en la primera pregunta, que si por ejemplo, el "style number" lo encuentro el la linea 17... necesitaría que me copie B17, C17, D17, E17, F17, G17 y que los pegue en las celdas "display" (estas celdas si serian fijas, ya están definidas)... las cuales serian B15, C15, D15, E15, F15, G15.
Mil gracias por tu ayuda... espero me haya dado a entender mucho mejor...
Para eso necesitamos otra hoja donde llevarnos el primer filtro y después buscar en el rango filtrado el segundo filtro. Si te sirve me lo dices y te daré la forma.
>Un saludo
>Julio
Claro que si, me parece muy bien... y crees que seria mejor si muevo toda la información que tengo de la Hoja1 a la Hoja2... para que así, en la hoja1 solo quede el "bottom" para iniciar todo el proceso de búsqueda y filtrado, ¿y también que queden en la hoja1 la celdas de "display"... y en la hoja2 que este toda la información... no se si esta bien?... bueno tu sabrás lo mejor, tu eres el que sabe :) ... pero si quieres mandame el código así como lo has pensado tu y así puedo intentar para ver como funciona...
Espero tu ayuda...
>Millones de gracias
>Guztabo
Vamos a ver he entendido que tienes estructurada la hoja de esta manera:
    B C D E F G
Name Number Hierarchy Style Quote To expire on date
Como buscamos primero por Number (Col C) ponemos en el botón esto (botón dibujado en la hoja), ojo no puede haber celdas vacías en la Col C:
Private Sub CommandButton1_Click()
Dim number As String
number = InputBox("Escriba el numero a buscar")
Range("C1").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value = number Then
Selection.EntireRow.Copy
Sheets("Hoja2").Select
ActiveSheet.Range("A1").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.PasteSpecial
End If
Sheets("Hoja1").Select
ActiveCell.Offset(1, 0).Select
Loop
End Sub
Ya tenemos en la Hoja2 tu rango filtrado por el valor que hayas puesto en el Inputbox.
Ahora volvemos a hacer otro filtrado con la opción de Style que esta en la Col E pondrías otro botón en la hoja 2 con la misma instrucción que antes cambiando la Col donde buscar que sería la E:
Private Sub CommandButton1_Click()
Dim style As String
style = InputBox("Escriba el numero a buscar")
Range("E1").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value = style Then
Selection.EntireRow.Copy
Sheets("Hoja3").Select
ActiveSheet.Range("A1").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.PasteSpecial
End If
Sheets("Hoja2").Select
ActiveCell.Offset(1, 0).Select
Loop
End Sub
He utilizado la hoja3 porque tu me decías que si encuentra el valor de Style Number en la fila POR que te lo lleve a una fila que ya está definida que sería la 15 pero si encuentra ese valor más de una vez como lo llevamos a la misma fila, iría borrando la anterior. Yo te lo he puesto en la Hoja3 si ahora tu quieres llevarlo a otro lugar pues actúas en consecuencia.
Espero que te sirva, si es así comenta, puntúa y finaliza la consulta. Gracias.
>Un saludo
>Julio
Perdona recordé que el problema del Textbox también lo tendrías en el Combox según vayas escribiendo valores los ira agregando si no los encuentra en la lista por tanto en vez poner el procedimiento a Change cambialo también a AfterUpdate.
Al salir del combo sera cuando realize el código.
>Un saludo

Añade tu respuesta

Haz clic para o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.

Más respuestas relacionadas