Copiar valores de celdas a otra hoja en forma vertical

Necesito me ayuden a crear una macro que copie a otra hoja ciertas celas de un rango, pero que me las coloque en forma vertical, ejemplo.

En la Hoja 1 tengo la siguiente tabla

A B C D E F G

1 nombre código1 valor código 2 valor código 3 valor

2 Luis C700 800 C800 200

3 Juan T500 200 T500 500

4 Carlos Y700 400 R400 100

5 Pablo H500 200 U300 400

6 Norma R500 300

7 Karla S900 200

En la Hoja 2 quiero trasladar los datos de la siguiente manera:

A B C

1 nombre código valor
2 Luis C700 800

3 Luis C800 200

4 Juan T500 200

5 Juan T500 500

6 Carlos Y700 400

7 Carlos R400 100

8 Pablo H500 200

9 Pablo U300 400
10 Norma R500 300

11 Karla S900 200

La macro tendría que trasladar los datos en forma horizontal sin tomar las celdas vacías en la Hoja, esta información es bien extensa por eso deseo que se haga por macro.

1 respuesta

Respuesta
2

¿Solamente tienes 3 códigos?

Saludos. DAM

Actualmente solo son 3 código, pero la base puede crecer...

La cantidad de códigos varia, algunos usuarios pueden contar con 0, 1, 2 o 3 códigos, estos no tienen un orden en la primera tabla, lo que busco es que en la Hoja2 me presente el listado según el ejemplo.

La macro calcula el número de valores que tienes hacia la derecha, siempre y cuando, en cada columna de valor, en la fila 1, tengas la palabra "VALOR" (tal como lo tienes en tu ejemplo).

Sigue las Instrucciones para un botón y ejecutar la macro
1. Abre tu libro de Excel
2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
3. En el menú elige Insertar / Módulo
4. En el panel del lado derecho copia la macro
5. Ahora para crear un botón, puedes hacer lo siguiente:
6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona Asignar macro / Selecciona: códigos
9. Aceptar.
10. Para ejecutarla dale click a la imagen.

Sub codigos()
'Por.DAM
Set h1 = Sheets("Hoja1")
Set h2 = Sheets("Hoja2")
h2.Cells.Clear
h1.Select
m = 2
For n = 2 To Cells(1, Columns.Count).End(xlToLeft).Column
    If UCase(Left(Cells(1, n), 5)) = "VALOR" Then p = p + 1
Next
h1.Range("A1:C1").Copy h2.Range("A1")
For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
    k = 2
    For j = 1 To p
        If Cells(i, k) <> "" Then
            h2.Cells(m, "A") = Cells(i, "A")
            h2.Cells(m, "B") = Cells(i, k)
            h2.Cells(m, "C") = Cells(i, k + 1)
            m = m + 1
        End If
        k = k + 2
    Next
Next
h2.Select
End Sub

Saludos.DAM
Si es lo que necesitas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas