Macro para copiar el contenido de una celda en varias celdas

Dada la siguiente situación: tengo una columna "A" donde registro las cantidades de un producto solicitado, digamos que hay 10 celdas con datos; y una columna "B" con los precios para esos 10 productos y una celda "D1", donde tengo una fecha.

Quisiera copiar un rango, digamos A5:B5 a otra hoja, pero que a cada celda se le adicione en una columna adicional la fecha especificada en D1, de manera que la nueva hoja tendría 5 lineas; cada una con producto-precio-fecha.

1 respuesta

Respuesta
1

Para desarrollarte la macro se me presentan las siguientes dudas:

1- Si el rango a copiar lo tendrás seleccionado o sino cómo esperas indicarle a la macro cuál será ese rango. Supongo que en tu ejemplo habrás querido indicar A1:B5 sino no se entiende lo de las 5 filas.

2- ¿A qué hoja se debe copiar y en qué fila? ¿A continuación de la última ocupada?

Quedo a la espera de tus aclaraciones, no valores aún.

Sdos

Elsa

¡Gracias! Disculpa, di por sobreentendido que era así como lo supusiste. Además, al revisar caí en cuenta de un error, la info correcta seria así

Más detalles:

El origen del rango a copiar A1:B5 se encuentra en la Hoja "a"

El destino a copiar seria la hoja "B", a partir de la celda A2, a partir de la ultima ocupada

En la macro se indicaría que debe copiar el rango A1:B5 a la hoja "B", copiando solamente valores, ningún tipo de formato.

Gracias por su atención

Entrá al Editor de macros (presionando Alt y F11 juntas).

Insertá un módulo y allí pegá este código:

Sub MacroCopia()
'x Elsamatilde

'copia rango A1:B5 de hoja "a" a hoja "b", solo valores
Set ha = Sheets("a")
Set hb = Sheets("b")

Application.ScreenUpdating = False
'ejectua desde hoja 'a'
ha.Select
Range("A1:B5").Copy
'se pega en hoja 'b'
hb.Select
'busca 1er fila libre
Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'vuelve a la hoja de origen
ha.Select
'quita el modo de copiado
Application.CutCopyMode = False
Range("A1").Select
End Sub

Dejo comentarios en cada línea para que puedas ajustarla a tu modelo real.

Sdos y no olvides valorar la respuesta.

Elsa

500Macros

¡Gracias! de nuevo, solo un detalle mas: en el post original me refiero a copiar el contenido de una celda especifica (D1), a todo el rango A1:B1 que se copia en la hoja B, de manera que quede asi:

En la hoja B el rango A1:B5
producto 1     precio1     fecha (Valor almacenado en D1 de la hoja A)
producto 2     precio2     fecha (Valor almacenado en D1 de la hoja A)
producto 3     precio3     fecha (Valor almacenado en D1 de la hoja A)
producto 4     precio4     fecha (Valor almacenado en D1 de la hoja A)
producto 5     precio5     fecha (Valor almacenado en D1 de la hoja A)

Te quedaría así entonces. Las líneas en negrita son las agregadas. Estoy considerando la col C pero ajusta a gusto:

Sub MacroCopia()
'x Elsamatilde

'copia rango A1:B5 de hoja "a" a hoja "b", solo valores
Set ha = Sheets("a")
Set hb = Sheets("b")

Application.ScreenUpdating = False
'ejectua desde hoja 'a'
ha.Select
Range("A1:B5").Copy
'se pega en hoja 'b'
hb.Select
'guarda 1er fila libre para pegar D1
ini = Range("A" & Rows.Count).End(xlUp).Row + 1
'selecciona y pega en la primer celda libre
Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'pega la fecha en col C
Range("C" & ini & ":C" & Range("A" & Rows.Count).End(xlUp).Row) = ha.Range("D1")
'vuelve a la hoja de origen
ha.Select
'quita el modo de copiado
Application.CutCopyMode = False
Range("A1").Select
End Sub

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas