
Não tenho experiência suficiente com VBA para fazer isso. Como modifico o VBA abaixo para poder fazer o seguinte:
Coloque colunas empilhadas em uma nova planilha.
Lidar com espaços em branco (o código abaixo atualmente faz isso)
3.code é executado no intervalo que o usuário selecionou atualmente. Idealmente, o usuário pode selecionar colunas não contíguas.
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
Responder1
Eu usaria o suplemento Power Query para isso, embora ele não consiga atender ao requisito nº 3. No Excel 2016, o Power Query é integrado à faixa de dados na seção "Obter e transformar".
As etapas que eu criaria no Power Query seriam:
Selecione as colunas Org e Length e escolha "Remover Colunas".
Selecione a coluna Categoria e escolha "Desdinamizar colunas/Desdinamizar outras colunas".
Você pode entregar o resultado em uma nova tabela do Excel.