
У меня недостаточно опыта работы с VBA, чтобы сделать это. Как мне изменить нижеприведенный VBA, чтобы иметь возможность сделать следующее:
Поместите сложенные столбцы на новый лист.
Обработка пробелов (в настоящее время это делает приведенный ниже код)
3.код выполняется в диапазоне, выбранном пользователем в данный момент. В идеале пользователь может выбирать несмежные столбцы.
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
решение1
Я бы использовал для этого надстройку Power Query, хотя она не справляется с требованием № 3. Начиная с Excel 2016, Power Query встроен в ленту «Данные» в разделе «Получить и преобразовать».
Шаги, которые я бы создал в Power Query, были бы следующими:
Выберите столбцы Org и Length, затем выберите «Удалить столбцы».
Выберите столбец «Категория» и нажмите «Отменить свертывание столбцов / Отменить свертывание других столбцов».
Вы можете сохранить результат в новой таблице Excel.