Macro que copie y pegue las veces indicadas en una celda

Me pueden ayudar con una macro que me haga la siguiente función. Cuando las celdas de la columna E tengan una cantidad, la macro tiene que copiar la cantidad escrita correspondientemente a su celda A, B y C. Por ejemplo E2 Tiene que copiar 5 veces A2, B2 Y C2 pero serian 4 descontando lo que ya esta escrito en dichas celdas lo mismo con las demás celdas E. El copiado lo tiene que hacer en las celdas A, B y C que encuentre vacías hacia abajo por ejemplo en la imagen seria Pegar desde E17, B17 y C17 hacia abajo. El limite que tengo para pegar es hasta A40, B410 Y C40 porque hasta ahí seria una hoja y de ahí tendría que seguir pegando en A42, B42 y C42. Espero darme a entender. Gracias por su apoyo

1 Respuesta

Respuesta
1

Ya lleva varios días esta consulta aquí. Si aún no tenés resuelto el tema comentame aclarando este detalle: ¿En qué momento debe ejecutarse el relleno? ¿Al momento que ingresas un valor en col E o recorriendo así como está tu tabla?

Hola buenas tardes. Así es como lo hago primero escribo todos los productos y las cantidad de veces a copiar, selecciono la celda E que quiera copiar (en este ejemplo E2) oprimo el botón copiar y me aparece un inputbox donde pongo la cantidad que esta en la celda 

y como se ve en la siguiente imagen copia en la fila que encuentra vacía en este caso la fila 10  (si se da cuenta nada mas copio una vez porque toma en cuenta la que ya esta escrita) 

y así voy repitiendo la misma operación E2 copio, E3 copio, E4 copio y así sucesivamente en las celdas E que tengan cantidad y quiero evitar todo eso quiero que al oprimir copiar la macro copie todas de una vez las cantidades que estén escritas en la columna E con acepción de las que que tengan 1 porque con la que esta escrita basta. Espero darme a entender y gracias por su ayuda

Te dejo la macro que la colocarás en un módulo y podrás llamarla desde el menú Macros o asociarla al botón que ya tiene tu hoja.

Sub rellenando()
'x Elsamatilde
'busca el fin de rango
x = Range("E" & Rows.Count).End(xlUp).Row
'compruebo que haya datos
If x = 1 Then
    MsgBox "No hay datos para copiar."
    Exit Sub
End If
'primer fila destino
a = x + 1
'recorre col E hasta el último dato
For i = 2 To x
    'si es > 1 copia la fila
    If Range("E" & i) > 1 Then
        'cantidad a copiar
        b = Range("E" & i) - 1
        'copia el rango en la primer fila destino
        Range("A" & i & ":C" & i).Copy Destination:=Range("A" & a & ":C" & a + b - 1)
        'incrementa la fila destino
        a = a + b
    End If
Next i
'opcional: enviar mensaje de fin
MsgBox "Fin del proceso."
End Sub

Te invito a mirar el video N°45 de mi canal donde explico el evento 'Doble Clic' que sería muy apropiado para tu caso en reemplazo del botón. 

Sdos y no olvides valorar la respuesta (conforme a lo que recibes.)

Elsa

Hola. coloque la macro pero me pide depurar este error

Qué pena la demora, pero parece que ya no recibimos notificaciones ¿? Además como ya la valoraste me aparece como cerrada.

Bien, Lo que dice esa línea es que guarde en la variable 'b' el valor de la celda E -1 siempre y cuando ese valor sea > 1.

Es decir que si Range("E2") = 4 , b= 3

Si te marca error debes revisar qué contiene tu col E ... quizás en alguna hay un texto, o un error y no puede realizar la resta.

Si con esto queda resuelto agradeceré mejores tu valoración.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas