
No tengo suficiente experiencia con VBA para lograr esto. ¿Cómo modifico el siguiente VBA para poder hacer lo siguiente?
Coloque columnas apiladas en una hoja nueva.
Manejar espacios en blanco (el código siguiente actualmente hace esto)
3.code se ejecuta en el rango que el usuario ha seleccionado actualmente. Lo ideal es que el usuario pueda seleccionar columnas no contiguas.
Sub MoveAllDataToColumnA()
Dim i As Long, ws As Worksheet, rngCopy As Range, rngEnd As Range
Set ws = ActiveSheet
Do Until ws.Cells(1, 2).Value = ""
Set rngCopy = ws.Range("B2", ws.Cells(ws.Rows.Count, "B").End(xlUp))
Set rngEnd = ws.Cells(ws.Rows.Count, "A").End(xlUp).Offset(1, 0)
rngEnd.Resize(rngCopy.Rows.Count, 1).Value = rngCopy.Value
rngCopy.EntireColumn.Delete
Loop
End Sub
Respuesta1
Usaría el complemento Power Query para esto, aunque no puede cumplir con el requisito n.° 3. Desde Excel 2016, Power Query está integrado en la cinta Datos en la sección "Obtener y transformar".
Los pasos que crearía en Power Query serían:
Seleccione las columnas Organización y Longitud, luego elija "Eliminar columnas".
Seleccione la columna Categoría y elija "Desvincular columnas/Desvincular otras columnas".
Puede entregar el resultado en una nueva tabla de Excel.