Macro convertir una tabla (malla) en tres columnas

Tengo una tabla (malla) en excel de x filas, y columnas, estas pueden variar,

Pestaña origen

y necesito una macro que en la pestaña RESULTADO, me ponga 3 columnas

Es decir primera columna RESULTADO, va repitiendo el valor primer valor de la primera fila ORIGEN, segunda columna RESULTADO va poniendo el primer valor (encabezado) de la primera columna ORIGEN y en la tercera columna sus cruces.

La segunda fila de la primera columna RESULTADO repite el mismo valor de la primera fila ORIGEN, hasta completar, todos los datos del encabezado de la tabla ORIGEN, y en la tercera columna RESULTADO pone los cruces. Segun imagenes, tengo los datos de ORIGEN y quiero conseguir RESULTADO.

1 respuesta

Respuesta
2

H o la : Te anexo la macro.

Pon en la macro el nombre de tu tabla en esta línea:

tabla = "Tabla1"

La macro:

Sub ConvertirTabla()
'Por.Dante Amor
    Set h1 = Sheets("ORIGEN")
    Set h2 = Sheets("RESULTADO")
    tabla = "Tabla1"
    h2.Cells.Clear
    '
    fini = h1.Range(tabla).Cells(1, 1).Row
    cini = h1.Range(tabla).Cells(1, 1).Column
    ffin = h1.Range(tabla).Rows.Count + fini - 1
    cfin = h1.Range(tabla).Columns.Count + cini - 1
    '
    k = 4
    m = 2
    For i = fini To ffin
        For j = cini + 1 To cfin
            h2.Cells(k, m) = h1.Cells(i, cini)
            h2.Cells(k, m + 1) = h1.Cells(fini - 1, j)
            h2.Cells(k, m + 2) = h1.Cells(i, j)
            k = k + 1
        Next
    Next
    MsgBox "Fin"
End Sub

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

¡Gracias!

Es perfecto, muchísimas gracias, Dante Amor. Te pongo 100 ticks EXCELENTISSSSIMO

Se podría hacer lo mismo, en vez de aplicarlo a una tabla, se aplique a un Rango de datos, que puede variar y  siempre estaría junto. Por ejemplo que coja el rango de las celdas no vacías, (es decir sin hacer referencia a una celda en concreto), por ejemplo de esa sheet  coger como rango la primera celda (fila y columna) no vacía,  hasta la ultima celda (fila y columna) no vacía, y aplicar lo mismo que en la tabla, solo que vez de aplicarlo en la tabla se aplique a ese rango

Muchísimas gracias

Sí es posible.

Tendría que hacerle cambios a la macro,

Con mucho gusto te ayudo con todas tus peticiones.

Crea una nueva pregunta en Todoexpertos dentro del tema de microsoft excel. En el desarrollo de la pregunta escribe: "para Dante Amor". Ahí me describes con detalle lo que necesitas.

Sal u dos

Muchas gracias  Dante Amor, ya creado la nueva pregunta en Todoexpertos dentro del tema de microsoft Excel, tal y como me comentaste.

Muchísimas gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas