Как объединить несколько столбцов в один?

Как объединить несколько столбцов в один?

Пример данных

У меня недостаточно опыта работы с VBA, чтобы сделать это. Как мне изменить нижеприведенный VBA, чтобы иметь возможность сделать следующее:

  1. Поместите сложенные столбцы на новый лист.

  2. Обработка пробелов (в настоящее время это делает приведенный ниже код)

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.

Связанный контент