Buscar y pegar datos por mes

Hola expertos:
Ante todo muchas gracias por la ayuda que prestan siempre en este sitio, en el cual soy nuevo.
¿Existe la posibilidad que me apoyen con un código que realice lo siguiente?
Tengo 2 libros de excel, uno es un reporte mensual y el segundo un concentrado anual por cliente, y necesito que la macro pueda:
1. En función del número correspondiente al mes colocado en un inputbox, entienda en que columna del concentrado anual, deberá colocar los datos del mensual.
2. A partir de la celda a2 del libro reporte mensual, buscar el dato en el libro del reporte anual, una vez localizada la fila que le corresponde a ese producto, tomar el dato de la celda C2 del reporte mensual e ingresarlo en su lugar según criterio de punto 1 del concentrado anual.
3. Continuar con el mismo procedimiento con el dato de A3, y así sucesivamente, hasta topar con una celda en blanco, que es cuando el proceso se detiene.
El dato a buscar es consistente, y el númro de productos es variable cada mes, por lo que la lista anual de ese cliente puede contener 100 productos, pero en un mes solo usar 10, y esos son los que se deben reflejar en el concentrado anual.
El tema es que se trata de más de 30 clientes cada mes con productos usados que pueden ser desde 2 o 3 hasta 2000 o más, por lo que deseamos automatizarlo.
He intentado a partir de códigos encontrados en internet, adaptarlos a esto, pero no lo he logrado y me urge tenerlo listo.
El último código que use es el siguiente, pero marca error 1004 (lo probé solamente en un mismo libro hojas 1 y 2, sin tomar en cuanta aún la parte del punto 1)
Cualquier apoyo u orientación se los agradeceré infinitamente.
Gracias y un saludo
Pitufo72.
Código:
Sub prueba1()
Dim buscado As Integer
Dim visitas As Integer
Worksheets("Hoja1").Select
Range("A2").Select
Posicion = 1
While ActiveCell.Value <> ""
buscado = ActiveCell.Value
Worksheets("Hoja2").Select
Range("A2").Select
While ActiveCell.Value <> ""
If ActiveCell.Value = buscado Then
Worksheets("Hoja1").Select
visitas = ActiveCell.Offset(0, 2).Value
Worksheets("Hoja2").Select
ActiveCell.Offset(0, 2) = visitas
End If
ActiveCell.Offset(1, 0).Range("A2").Select
Wend
Worksheets("Hoja1").Select
Posicion = Posicion + 1
Range("A2").Select
ActiveCell.Offset(Posicion - 1, 0).Range("A2").Select
Wend
End Sub

1 Respuesta

Respuesta
1
Sin detenerme a crear 2 libros para probarlo, te sugiero 2 cosas:
Cada vez que cambias de hojas, es mejor que hagas referencia a la misma al seleccionar una celda:
Worksheets("Hoja1").Select
ActiveSheet.Range("A2").Select     'es mejor que solo Range
Y si aún con eso sigue dando error, deberás indicarnos en qué línea se produce.
Ejecutala nuevamente, y cuando se detenga presioná el botón Depurar e indicame la línea de color y su mensaje.
Sdos
Elsa
PD) No pierdas tiempo buscando... mejor opta por uno de mis manuales ;)
Hola Elsa:
Muchas gracias por su amable y pronta respuesta.
Realice los cambios y generó el error 13, el cual resolví al cambiar las variables declaradas por tipo Variant, sin embargo, a pesar de que aparentemente la macro ya se ejecuta completa, no pinta los valores en la hoja 2.
El código quedo de esta forma:
Sub Traer()
Dim vbuscado As Variant
Dim visitas As Variant
Application.ScreenUpdating = False
Worksheets("Hoja1").Select
ActiveSheet.Range("A1").Select
Posicion = 1
While ActiveCell.Value <> ""
vbuscado = ActiveCell.Value
Worksheets("Hoja2").Select
ActiveSheet.Range("A1").Select
While ActiveCell.Value <> ""
If ActiveCell.Value = vbuscado Then
Worksheets("Hoja1").Select
visitas = ActiveCell.Offset(0, 1).Value
Worksheets("Hoja2").Select
ActiveCell.Offset(0, 1) = visitas
End If
ActiveCell.Offset(1, 0).Range("A1").Select
Wend
Worksheets("Hoja1").Select
Posicion = Posicion + 1
Range("A1").Select
ActiveCell.Offset(Posicion - 1, 0).Range("A1").Select
Wend
End Sub
Reitero mi agradecimento y si me interesaría obtener los manuales, pero siendo novato en el tema de macros, ¿cuál me recomienda para empezar?
Saludos cordiales
Atentamente,
Pitufo72
En ninguna línea se indica que deba dar color...
Solo se están pasando los valores de la col siguiente (B) a la hoja2. ¿Cuál es tu idea?
PD) Te recomiendo el de Programación VBA (nivel inicial). Paso a paso por todos los conceptos, con + de 100 ejemplos. Podes descargar la demo desde aquí o solicitármelo a mi correo.
Sdos
Elsa

Añade tu respuesta

Haz clic para o