Rellenar columnas con dato de una celda de otra hoja

Nuevamente aquí solicitando una ayuda con un código:

tengo 18 columnas la hoja1 (C,F,N,P,R,T,Y,AA,AC,AE,AG,AM,AO,AR,BC,BF,BH,BJ )

Las otras tiene datos pero estas están vacías (siempre van a estar vacías ya que son insertadas con un subfuncion), ahora, tengo la hoja2 que contiene datos en el rango B2:B18, la pregunta seria:

Como hago para que de la hoja2 la fila B2 se copie en la columna C de la hoja1, desde C3 hasta la ultima fila con datos, la fila B3 se copie desde F3 hacia abajo hasta la ultima fila con datos y así sucesivamente cada una de ellas, espero me puedan ayudar gracias.

Yo hice este código pero solo me carga la primera fila ja ja

Sub Copiar()
Worksheets("Formulas"). Range("B1"). Copy
Worksheets("val_padron"). Range("C3"). PasteSpecial xlPasteAll
Worksheets("Formulas"). Range("B2"). Copy
Worksheets("val_padron"). Range("F3"). PasteSpecial xlPasteAll
Worksheets("Formulas"). Range("B3"). Copy
Worksheets("val_padron"). Range("N3"). PasteSpecial xlPasteAll
Worksheets("Formulas"). Range("B4"). Copy
Worksheets("val_padron"). Range("P3"). PasteSpecial xlPasteAll
Worksheets("Formulas"). Range("B5"). Copy
Worksheets("val_padron"). Range("R3"). PasteSpecial xlPasteAll
Worksheets("Formulas"). Range("B6"). Copy
Worksheets("val_padron"). Range("T3"). PasteSpecial xlPasteAll
Worksheets("Formulas"). Range("B7"). Copy
Worksheets("val_padron"). Range("Y3"). PasteSpecial xlPasteAll
Worksheets("Formulas"). Range("B8"). Copy
Worksheets("val_padron"). Range("AA3"). PasteSpecial xlPasteAll
Worksheets("Formulas"). Range("B9"). Copy
Worksheets("val_padron"). Range("AC3"). PasteSpecial xlPasteAll
Worksheets("Formulas"). Range("B10"). Copy
Worksheets("val_padron"). Range("AE3"). PasteSpecial xlPasteAll
Worksheets("Formulas"). Range("B11"). Copy
Worksheets("val_padron"). Range("AG3"). PasteSpecial xlPasteAll
Worksheets("Formulas"). Range("B12"). Copy
Worksheets("val_padron"). Range("AM3"). PasteSpecial xlPasteAll
Worksheets("Formulas"). Range("B13"). Copy
Worksheets("val_padron"). Range("AO3"). PasteSpecial xlPasteAll
Worksheets("Formulas"). Range("B14"). Copy
Worksheets("val_padron"). Range("AR3"). PasteSpecial xlPasteAll
Worksheets("Formulas"). Range("B15"). Copy
Worksheets("val_padron"). Range("BC3"). PasteSpecial xlPasteAll
Worksheets("Formulas"). Range("B16"). Copy
Worksheets("val_padron"). Range("BF3"). PasteSpecial xlPasteAll
Worksheets("Formulas"). Range("B17"). Copy
Worksheets("val_padron"). Range("BH3"). PasteSpecial xlPasteAll
Worksheets("Formulas"). Range("B18"). Copy
Worksheets("val_padron"). Range("BJ3"). PasteSpecial xlPasteAll
End Sub

2 respuestas

Respuesta
2

H ol a: Te anexo la macro.

Sub Copiar2()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Set h1 = Sheets("Formulas")     'hoja origen
    Set h2 = Sheets("val_padron")   'hoja destino
    cols = Array("", "C", "F", "N", "P", "R", "T", "Y", "AA", "AC", _
                 "AE", "AG", "AM", "AO", "AR", "BC", "BF", "BH", "BJ")
    '
    u = h2.UsedRange.Rows(h2.UsedRange.Rows.Count).Row
    For i = 1 To 18
        h1.Range("B" & i).Copy
        h2.Range(h2.Cells(3, cols(i)), h2.Cells(u, cols(i))).PasteSpecial xlPasteAll
    Next
    Application.ScreenUpdating = True
    MsgBox "fin"
End Sub

Te hago una observación, con esta instrucción:

u = h2. UsedRange. Rows(h2. UsedRange. Rows. Count). Row

Se encuentra la última celda con datos, pero tal vez, puede ser la última celda que hayas utilizado. Lo más eficiente sería encontrar la última fila con datos de alguna columna específica, por ejemplo, si en la hoja "val_padron" la columna A, siempre va a tener datos, entonces la línea para encontrar la última fila sería esta:

u = h2.Range("A" & Rows. Count).End(xlUp). Row

Lo que hice fue seguir tu macro, copiar B1 en C, B2 en F, etc.


'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Excelente función, muchas gracias... funciona muy bien, el detalle esta en que si existe una forma de no copiar la celda de la hoja2, si no más bien que se copie el contenido, es decir como cuando le das F2 a la celda la activas eliges el contenido, le das F2 a otra celda y la pegas, ¿será posible eso? Ya que cuando copia y pega la fórmula que deseo copiar cambia las referencias de las celdas por 2 ejemplo, si en la fórmula dice =SI(E2...) cuando se pega en la otra hoja me muestra =SI(G2...)

Solamente me guié por lo que pusiste en tu macro:

"PasteSpecial xlPasteAll"

Si quieres valores, entonces cambia esta línea:

H2. Range(h2. Cells(3, cols(i)), h2. Cells(u, cols(i))). PasteSpecial xlPasteAll

Por esta:

H2. Range(h2. Cells(3, cols(i)), h2. Cells(u, cols(i))).PasteSpecial xlValues
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Amigo Dante antes que todo, agradecerte por la ayuda brindada, quisiera saber si existe alguna función para hacer estos pasos:

Ya que al pegar con xlPasteAll copia la fórmula pero como digo, las referencias se cambian, ejemplo:

=SI(W3="","campo vacío",SI(W3="F","ok",SI(W3="M","ok","verificar")))

la instruccion copia a la otra hoja asi:

=SI(AH3="","campo vacío",SI(AH3="F","ok",SI(AH3="M","ok","verificar")))

Ahora si cambio a xlValues copiara un valor más no la fórmula, podrías ayudarme con esa consulta, sin que abra otra pregunta, Porfavoooooorrr ='( =D gracias.

Con gusto te sigo ayudando, pero en la pregunta original pusiste esto:

"Como hago para que de la hoja2 la fila B2 se copie en la columna C de la hoja1, desde C3 hasta la ultima fila con datos"

Y eso es lo que hace la macro, copia una celda y la pega en una columna desde C3 hasta la última fila con datos.

Como nunca mencionaste que querías copiar una fórmula y que la fórmula debe copiarse tal cual, entonces sí, debes crear una nueva pregunta. Valoras esta pregunta, porque entregué una macro que respondía a tu duda.

En la nueva pregunta describes qué quieres copiar, en dónde lo quieres pegar y cómo quieres el resultado.

Entonces, si en  la hoja "fórmulas" tienes la fórmula =si(b2="","campo vacío", "campo lleno")

Tienes que poner cómo quieres que se pegue en la hoja "val_patron"

Pon imágenes para que sea más claro el ejemplo.

Sal u dos

Respuesta
1

No es muy elegante, pero funciona:

Sub copiar()

Worksheets("Formulas").Range("C3").Select
Range("C3").FormulaLocal = "=SI($B$3="""";"""";val_padron!$B$2)"
Selection.AutoFill Destination:=Range("C3:C1000")

Worksheets("Formulas").Range("F3").Select
Range("F3").FormulaLocal = "=SI($B$3="""";"""";val_padron!$B$3)"
Selection.AutoFill Destination:=Range("F3:F1000")

.

.

.

.

.

End Sub

Tienes que repetir tantas veces el código en negrita 17 veces cambiando los valores en negrita sucesivamente

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas