Saltar al contenido

Macro buscar datos y pegar en la celda vacia


Recommended Posts

Buenos días para todos...

Tengo un libro de excel el cual tiene tres hojas:

Solicitud: Primera hoja donde se ingresa los datos para alimentar la hoja "consolidado"

Consolidado: Hoja donde se acumulan Todas las Solicitudes de pagos.

Montaje: Un resumen de cada proyecto donde va el valor total, fechas de pago, % de pago, fechas etc. es decir, especifica Pagos de cada Proyecto.

Mi propósito es que en la hoja de Montaje exista un botón de formulario el cual ejecute una macro que tome y pase los valores de: "Fecha Solicitud" y "Valor Total" de cada proyecto (en la hoja de "Consoidado") y me los pegue dentro del rango de las columnas I:R (Hoja "Montajes"), Pero en dado caso que si ya hay Datos en PAGO N° 1 por ejemplo, me los pegue en PAGO N° 2 y así sucesivamente; Y que una vez que actualice la hoja "Montaje" en la de "Consolidado" ,en las columna "L" aparezca "Actualizado" Pero si los datos ya fueron pasados que los tomaria de nuevo, es decir, la macro seria como una actualización de los pagos.

He tratado de realizar por medio de grabadora de macros mirando Internet, foros, Youtube Etc... pero me ha resultado IMPOSIBLE hacer dicha macro.

Datos que puedan servir de ayuda:

Password para ver BVA: fender123

Password para desactivar la hoja"Solicitud": 123

Password para ver la hoja "Consolidado": afc123

No se si tomar como punto de referencia para la realización de esta macro el "Centro de costos" ya que es un dato fijo a la hora de digitar.

En el archivo Adjunto plasme un ejemplo de como iria la macro en el proyecto Ayuda Excel ( centro de costos 1). y el Stand By a la espera de ejecutar la macro Foro (centro de costos 2)...

Muchas Gracias por la atención Prestada...

Registro datos.rar

Enlace a comentario
Compartir con otras webs

Hola Gustavo

No se si entendí bien lo que necesitas, pero para ver cual es la ultima columna en blanco entre la Columna I y la Columna R de la hoja Montajes, podrías probar con esto:

Range("H10").Select

Selection.End(xlToRight).Select

ActiveCell.Offset(0, 1).Select

El Range("H10").Select es solo de referencia, pero las otras 2 lineas harán que la celda activa se mueva por la fila H hasta la ultima celda que tenga datos, y avanzara una celda mas, que sera la celda vacía, y ahí pegas lo que necesitas.

Ojala te sirva.

Saludos.-

Enlace a comentario
Compartir con otras webs

Hola Gustavo

No entiendo bien como quieres que la macro sepa el valor de la celda de la Columna E (centro de costo), asi que hice el siguiente codigo, donde pido que ingresen un valor para comparalo con la Columna B de la hoja Montajes, prueba si te sirve algo asi:

Sub Buscar()

' Buscar

Dim CentroCosto As Single 'Cree esta variable para saber que cosa buscar en la Columna B

Dim Comparacion As Range 'Cree esta variable para guardar el valor que tenga la celda de la Columna B

Sheets("Montajes").Select 'Asegurarme de que estemos en la hoja correcta

CentroCosto = Val(InputBox("Ingresa el Centro de Costo", "")) 'Buscar el centro de costo que necesites en la Columna B

'Aqui hice un For para buscar el Centro de costro ingresado arriba, en la Columna B, el rango puede variar

'Yo deje del 8 al 14 por que asi venia tu excel, pero puedes ampliar o acortar el rango

For Fila = 8 To 14 Step 1

Range("B" & Fila).Select

Set Comparacion = ActiveCell

If Comparacion = CentroCosto Then

Exit For

End If

Next

Selection.End(xlToRight).Select

ActiveCell.Offset(0, 1).Select

End Sub

Eso, ojala te sirva.

Saludos.-

Enlace a comentario
Compartir con otras webs

Hola Sebastian!!

De ante mano quiero darte las gracias por tomar parte de tu tiempo en asesorarme MUCHAS GRACIAS

Con respecto a la macro te cuento que está PERFECTA, sin embargo mi idea consiste es que me busque datos entre dos hojas es decir, el centro de costos que están dentro de (hoja Consolidado columna "E" y hoja Montajes columna "B"), y una vez que coincida el centro de costos me pegue los datos de la hoja consolidado (Celdas "G" y "K" ) en el rango que estan en el codigo que tu haz realizado pero que no me pegue datos que ya han sido pegados con anterioridad... estaba pensando algo como esto:

Sub Buscar()

' Buscar

Dim CentroCosto As Single 'Cree esta variable para saber que cosa buscar en la Columna "E" (De la hoja "consolidado")

Dim Comparacion As Range 'Cree esta variable para guardar el valor que tenga la celda de la Columna "E" (De la hoja "Monajes")

Sheets("Consolidado").Select 'Asegurarme de que estemos en la hoja correcta

CentroCosto = Val(InputBox("Ingresa el Centro de Costo", "")) 'Buscar el centro de costo que necesites en la Columna "E"

'Aqui hice un For para buscar el Centro de costro ingresado arriba, en la Columna E, el rango puede variar

'Yo deje del 8 al 14 por que asi venia tu excel, pero puedes ampliar o acortar el rango

For Fila = 8 To 14 Step 1

Range("E" & Fila).Select

Set Comparacion = ActiveCell

Y no se creo que podria ir un comando el cual me busque ese mismo centro de costos pero ahora en la hoja "Montajes" en la columna "B" y una vez que coincida ese centro de costos copiaria el rango de "G" y "K" (Fecha proceso y Valor total) y me lo pegue en la columna donde se encuentra ese centro de costos pero seria en el rango "I": "N"... no se he pensado para que no me vuelva a pasar datos que ya se pasaron a la hoja "montajes" colocar como

IF Range("L7:L999") = "Actualizado" Then Exit Sub (Pensando que estamos en la hoja "Consolidado")

If Range ("L7:L999") = " " Then

No se que comando podria ir que copie el rango G y K y los pegue en la celdas I:N (dependiedo la celda que este vacía)

y luego una vez que pase en la celda "L" de la hoja "Consolidado" ponga "Actualiado" con el fin que la macro solo pase datos que no se hayan pasado...

No sé si esta mal lo que estoy proponiendo no soy Experto en el tema... espero tu opinion y de nuevo Muchas GRACIAS!!

Enlace a comentario
Compartir con otras webs

Ya entiendo tu idea, pero para que funcione de esa forma, necesitas que cada fila tenga una celda que tenga un valor único y que no se repita (como un numero o código de transacción o de pago por ejemplo), y según lo que revise en la planilla que subiste, estas utilizando los Centros de Costos para esta finalidad, pero estos datos no son únicos, se repetirán dependiendo del proyecto, por lo que dentro de la Columna E de la hoja Consolidado, tendrás varias celdas con el mismo valor, y eso no permite verificar que el dato no este repetido.

Así como planteas la situación, o se copian todos los datos de la columna (pero se duplicaran valores) o se restringe que si ya existe un Centro de Costo igual a uno verificado anteriormente, se omita (pero por ejemplo, si tienes 10 Centros de Costo con valor 2, copiara la información de la primera celda que encuentre con valor 2, y las otras 9 las omitirá).

Bueno, eso es lo que se me ocurre a mi, tampoco soy tan experto en esto de las macros, quizás haya algún compañero del foro que pueda ver una solución que se ajuste a tu necesidad.

Suerte y saludos

Sebastián.-

Enlace a comentario
Compartir con otras webs

Hola Sebastian, gracias por comentar

Si entiendo perfectamente que seria un problema pero para eso no se podría colocar la condición "If"?? pues digo, que si la Columna "L" de la hoja "Consolidado" tiene "Actualizado" no lo pasaría pero si encuentra la casilla vacía lo pase es decir:

Supongamos que el centro de costos a pasar datos es el "123"

Supongamos que en la hoja "Consolidado" este repetido ese centro de costos 2 veces (celda E4 y E17) Pero el centro de costos de la celda E4 en su respectiva celda L4 ya este actualizado (lo cual traduce que ya fue pasado). entonces no se como seria ahí la cuestión de que aplique IF para que pase los datos de ese centro de costos E17 (ya que no se ha pasado. por ende en la casilla L17 estaría vacía) y una vez que lo pase a la hoja de "montajes" se ponga en la hoja "Consolidado" en la Celda "E17" "Actualizado" cosa tal que cuando se ingrese otro pago con ese centro de costos "123" descarte el E4 y la E17... no se si me hice explicar bien, o sino fue que no te entendi xD ... Gracias Sebastian!

Enlace a comentario
Compartir con otras webs

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.