Copiar datos luego de buscarlos en una columna de Excel

Tengo una columna "A" en la cual hay muchos datos me gustaría buscar el valor "Roro" y copiar desde esa fila hasta la fila donde vuelva aparecer "Roro" en la columna todo eso en otro excel alguna idea de como hacerlo.

2 Respuestas

Respuesta
2

La siguiente macro hará lo que necesitas. Solo debes ajustar nombre de libro, hoja y primer celda destino. En la macro dejo los comentarios para que puedas ubicar las instrucciones.

Sub buscaRoro()
'x Elsamatilde
'se solicita el dato a buscar
dato = InputBox("Ingresa el dato a buscar.")
If dato = "" Then Exit Sub
'se establece el destino: libro, hoja y primer celda libre en col A
Set hox = Workbooks("OtroLibro.xlsm").Sheets("Hoja2")
x = hox.Range("A" & Rows.Count).End(xlUp).Row + 1
'se busca en col A de la hoja activa.
Set busco = ActiveSheet.Range("A:A").Find(dato, LookIn:=xlValues, lookat:=xlWhole)
'si lo encuentra guarda la fila y busca el siguiente
If Not busco Is Nothing Then
    fila1 = busco.Row
    Do
    fila2 = busco.Row
    Set busco = ActiveSheet.Range("A:A").FindNext(busco)
    Loop While Not busco Is Nothing And busco.Row <> fila1
End If
'controla si las variables 'fila' contienen valores
If fila1 <> 0 And fila2 <> 0 Then
    Range("A" & fila1 & ":A" & fila2).EntireRow.Copy Destination:=hox.Range("A" & x)
End If
End Sub

La macro solicita el dato a buscar.... pero también podrías tomarlo de otra celda.

Y la copia se realiza de rango completo con la instrucción ENTIREROW, incluyendo las que tienen el dato a buscar... comentame si necesitas que ajuste algún detalle aquí.

Sdos y no olvides valorar la respuesta (opciones: excelente o buena)

Elsa

*Cyber-mes en manuales Excel

Buen día como lo mencione líneas abajo esta pregunta iba en mi pregunta es que tengo 2 Excel cada uno en distinta ruta pero uno es solo una plantilla hay copio mis datos y lo guardo con otro nombre aquí le dejo mi ejemplo espero una ayuda oportuna muchas gracias

Esta es la hoja de mi libro que deseo que se peque en mi la ruta que se encuentra mi plantilla (ruta C:\1\2\2018) y le cree una copia y lo guarde con el nombre de " pegado celda M4" lo cual lo hacen uy bien su macro anterior excepto este paso.

Como lo ven en la columna "A" esta una serie de datos deseo que cuando encuentre comp primer dato "RORO1" tome desde ese dato hasta que encuentre "GUERR2" y tome como valores también los que se encuentran en esa fila cuando esta en orden de ENERO hasta JUNIO se pega a la plantilla con esta condición.

Como se ve esta es mi plantilla se pego iniciando desde "RORO1" hasta "GUERR2" y toma sus mismos valores por cada mes con una condición como se ve abajo de cada mes un numero como máximo ejemplo tomamos ENERO se copia todos los valores en el mismo orden acorde a su valor pero cuando el dato es menor a 1 o es texto me figura <1 caso contrario si es numero mayor me lo muestre normal , si en caso toda la colunma tuviera puros valores de texto N.A entonces que solo copie todos los valores como un simple " - "  (guion) como se ve en la imagen de arriba.

Aveces ocurre estos cuando quiero pasar a mi plantilla solo cuando los meses esta desordenados se pone en abreviatura y no coinciden con mi plantilla de de la segunda imagen me gustaría que lo copie tal como menciono con la misma condición si es menos a su valor salga <a tal valor sino que se muestre el dato, pero me gustaria que en este caso lo ordene o recozca que MAY =MAYO y sus valores se copien en la plantilla como corresponde, espero su ayuda cualquier duda seguire respondiendole gracias.

Qué pena, la macro enviada respondía perfectamente a tu consulta original: Tengo una columna "A" en la cual hay muchos datos me gustaría buscar el valor "Roro" y copiar desde esa fila hasta la fila donde vuelva aparecer "Roro" en la columna todo eso en otro excel.

Solo tenías que reemplazar los datos de tu otro libro: nombre, nombre de hoja y primer fila de destino en estas instrucciones:

'se establece el destino: libro, hoja y primer celda libre en col A
Set hox = Workbooks("OtroLibro.xlsm").Sheets("Hoja2")
x = hox.Range("A" & Rows.Count).End(xlUp).Row + 1

Pero ahora le has agregado todas las condiciones del pegado.

Como ya no tendré tiempo para continuarla le paso la posta a Dante que también se ofreció y si le place continuarla. Ya cuenta con las imágenes como para agregar las condiciones para el copiado.

Sdos!

Respuesta
1

¿Puedes poner una imagen con un ejemplo de lo que quieres copiar y en dónde quieres pegar?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas