Macro para transponer sin coincidencias

Necesito eliminar los duplicados de una columna, pegarlos en otra y hacer varias transposiciones... Esto es un poco complejo, ya que estoy intentando:

- Que en la columna 'table_name' se seleccionen todos los elementos y se peguen en otra columna (en otra hoja) sin duplicados.

- Seleccionar los elementos de la columna 'column_name' en los que el cruce de la fila 'table_name' con 'column_name', tiene el mismo valor para 'table_name', agruparlos.

- Transponer en horizontal los elementos del paso anterior al mismo nivel que la nueva posición sin repetición del valor de 'table_name'.

- Añadir debajo de cada nuevo elemento 'table_name' sin repetición, los valores 'data_type' y 'IS_NULLABLE'...

- Buscar los valores para 'data_type' y 'IS_NULLABLE' y transponerlos en el nivel que corresponde (el valor de 'data_type' en su nivel transpuesto como una fila).

- Añadir un salto de línea respecto al siguiente 'table_name' para separar las tablas...

Adjunto una imagen donde hice el cambio a mano... Son demasiados datos y no se nada de macros... Tampoco se me ocurre otra forma de poder hacerlo, ¿alguna idea?

1 Respuesta

Respuesta
2

Te anexo la macro

En la "Hoja1" pon tus datos, el resultado quedará en la "Hoja2"

Si quieres otros nombres de hoja, cambia en la macro "Hoja1" y "Hoja2" por los nombres de tus hojas.

Sub Transponer()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Set h1 = Sheets("Hoja1")    'hoja con datos
    Set h2 = Sheets("Hoja2")    'hoja de resultados
    '
    h2.Cells.Clear
    i = 2
    Do While h1.Cells(i, "A") <> ""
        Set b = h2.Columns("A").Find(h1.Cells(i, "A"), lookat:=xlWhole)
        If b Is Nothing Then
            k = 2
            u = h2.Range("A" & Rows.Count).End(xlUp).Row + 2
            h2.Cells(u, "A") = h1.Cells(i, "A")
            h2.Cells(u + 1, "A") = h1.Cells(1, "B")
            h2.Cells(u + 2, "A") = h1.Cells(1, "D")
        Else
            u = b.Row
        End If
        h2.Cells(u, k) = h1.Cells(i, "C")
        h2.Cells(u + 1, k) = h1.Cells(i, "B")
        h2.Cells(u + 2, k) = h1.Cells(i, "D")
        k = k + 1
        i = i + 1
    Loop
    Application.ScreenUpdating = True
    MsgBox "Fin"
End Sub

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: Tamaño y Propiedades. En la ventana que se abre selecciona la pestaña: Propiedades. Desmarca la opción “Imprimir Objeto”. Presiona “Cerrar”
  9. Vuelve a presionar click derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: Transponer
  10. Aceptar.
  11. Para ejecutarla dale click a la imagen.

.

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

.

Avísame cualquier duda

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas