Copiar ciertas filas de una hoja a otra

Hola, que tal. En la columna A de la hoja1 están los nombres de los clientes (el cual se repite según la cantidad de pedidos que tenga), y en las demás columnas están los importes de los pedidos, fecha del pedido, pagos, fecha del pago y Nº de recibo. Quisiera, en la hoja 2, tener una lista con los nombres de los clientes (que los obtenga de la columna A de la hoja1, y que no los repita en la lista), y al seleccionar uno me copie todos los registros (osea todas las filas) que tiene ese cliente en la hoja1.
Espero que se entienda y ojala puedan ayudarme!
Muchas Gracias

2 Respuestas

Respuesta
1
Podrías generar una tabla dinámica :
Entra al menu "Datos" entra en "Informe de tablas y gráficos dinámicos" dale en "siguiente" ahora marca todos las columnas en donde están tus datos, dale en "siguiente" en esta pantalla elije "Hoja de calculo nueva", entra en el botón que dice "Diseño", en esta pantalla ubicate con el mouse en donde esta el nombre de la columna donde tienes a tus clientes ahora "arrastra" el dato a donde dice "FILA" y también el mismo dato arrastralo a donde dice "Datos" ahora dale en "aceptar", ahora en la pantalla que estas dale en "Finalizar".
Con esto te va a generar una tabla con todos tus clientes y el numero de veces que los tienes repetidos, ahora para que te copie todos los registros de ese cliente solo posiciónate donde esta el numero de veces que esta repetido y dale doble click con esto te creara una nueva hoja con todos los datos de ese cliente en especifico.
Respuesta
1
Una forma rápida (manualmente) es utilizando Autofiltros.
Posiciónate en cualquier celda de títulos y desde menú Datos, Filtro, activá Autofiltros.
Ahora podes seleccionar el cliente que quieras .
Si necesitás la tabla resultante en otro sitio, seleccioná las filas obtenidas desde su encabezado, copiar. Seleccioná la primer celda de destino y pegar.
Nota: el Autorfiltro te permite acotar aún más tu selección. Luego de filtrar por cliente, podes filtrar además por otros criterios (como fechas)
Gracias por responder Elsa! Es exactamente lo que quiero hacer, pero quiero que lo haga automáticamente cuando ponga el nombre de un cliente en la hoja2.
Osea que cuando (siguiendo el ejemplo anterior) escriba Juan en una celda de la hoja2, realice el filtro en la hoja1, y me copie en la hoja2 todas las filas que tiene Juan. Y haga lo mismo cuando ponga otro cliente.
Muchas Gracias!
Saludos
Alejandro
Entonces entrá al Editor (con ALty F11), seleccioná con doble clic el objeto HOJA2 y copiá esta rutina, que es solo un ejemplo.
Encontrarás algunas explicaciones como para ajustarla a tus referencias.
Tené presente que así como está te copiará el rango filtrado sobre lo datos que ya haya en la hoja2, debieras limpiarla previamente.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(False, False) = "A2" Then
crit = Target.Value
Sheets("Hoja1").Select
ActiveSheet.Range("A2").Select
Selection.AutoFilter
'ajustar rango total a filtrar. Field:= indica la col a filtrar
ActiveSheet.Range("$A$1:$F$70").AutoFilter Field:=1, Criteria1:=crit
'copia el rango filtrado y lo lleva a la hoja 2, a partir de A1
ActiveSheet.Range("A2").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy
Sheets("Hoja2").Select
ActiveSheet.Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
End If
End Sub
Excelente Elsa! Era exactamente lo que estaba buscando! Una ultima cosita... ¿Cómo hago si quiero que esto lo haga con una macro (para activarla con un botón) y que antes de copiar los datos me borre los campos de la consulta anterior?
La idea es que figure:
Ingrese Cliente: ... [CONSULTAR]
Muchas Gracias!
Saludos
Alejandro
Perdón... pero yo leí:
'.....quiero que lo haga automaticamente cuando ponga el nombre de un cliente en la hoja2.'
Bueno... dibujá un botón con la barra Cuadro de controles, clic derecho sobre el botón opción Ver código y allí copiá entre las 2 líneas la rutina que está ajustada a la nueva necesidad:
'limpia rango de datos anteriores
Application.ScreenUpdating = False
ActiveSheet.Range("A3:K2000").Clear  'AJUSTÁ A TU RANGO PERO EN EXCESO
crit = ActiveSheet.Range("A1").Value    ' EL DATO LO TOMA DE A1
Sheets("Hoja1").Select
ActiveSheet.Range("A2").Select
Selection.AutoFilter
'ajustar rango total a filtrar. Field:= indica la col a filtrar
ActiveSheet.Range("$A$1:$F$70").AutoFilter Field:=1, Criteria1:=crit
'copia el rango filtrado y lo lleva a la hoja 2, a partir de A1
ActiveSheet.Range("A2").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy
Sheets("Hoja2").Select
ActiveSheet.Range("A3").Select  'LA TABLA FILTRADA LA COPIA A PARTIR DE A3
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveSheet.Range("A1").Select
Saludos
Elsa
http://galeon.com/aplicaexcel/manuales.htm

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas