Я бы рекомендовал предварительно обработать данные, прежде чем импортировать их в Excel.
Однако я создал процедуру в VBA, которая делает то, что вы хотите:
Чтобы установить макрос
Откройте Excel -> Alt+F11 -> Вставить -> Модуль -> вставьте следующий код -> Ctrl+S -> и выберите «Excel Macro-Enabled Workbook (* .xlsm)» из выпадающего списка
Sub ToManyColumns()
Dim firstCellRow As Long
firstCellRow = 1 'change this if you don't want to start at A1
Dim firstCellColumn As Long
firstCellColumn = 1 'change this if you don't want to start at A1
Application.ScreenUpdating = False
ActiveSheet.Cells(firstCellRow, firstCellColumn).Activate
Dim column As Long
column = firstCellColumn
Dim startIndex As Long
Dim endIndex As Long
Dim lastRow As Long
lastRow = firstCellRow
Do While True
'find the range to copy
startIndex = ActiveCell.row
Do While ActiveCell.Value <> ""
endIndex = ActiveCell.row
ActiveCell.Offset(1).Activate
Loop
lastRow = ActiveCell.row
Range(Cells(startIndex, firstCellColumn), Cells(endIndex, firstCellColumn)).Select
Selection.Copy
Cells(firstCellRow, column).Select
Selection.PasteSpecial Paste:=xlPasteValues
'get back to last rowIndex
Cells(lastRow, firstCellColumn).Activate
ActiveCell.Offset(1).Activate
If ActiveCell.Value = "" Then Exit Do
column = column + 1
Loop
'cleanUp -------------------------------------------
Dim deleteFrom As Long
Dim deleteTo As Long
deleteTo = ActiveCell.row
ActiveSheet.Cells(firstCellRow, firstCellColumn).Activate
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1).Activate
Loop
deleteFrom = ActiveCell.row
Range(Cells(deleteFrom, firstCellColumn), Cells(deleteTo, firstCellColumn)).Select
Selection.ClearContents
ActiveSheet.Cells(firstCellRow, firstCellColumn).Activate
'cleanUp -------------------------------------------
Application.ScreenUpdating = True
End Sub
Чтобы запустить макрос:
- Убедитесь, что вы находитесь на рабочем листе, которым хотите быть! И нажмите в любом месте на листе!
(Потому что этот макрос выполняется в активированной рабочей таблице)
- Alt+F11 -> Нажмите где-нибудь в коде -> нажмите F5
Вы также можете создать кнопку на рабочем листе и назначить ей макрос - она более удобна для пользователя и вам не нужно проверять, что вы находитесь на нужном рабочем листе.
Заметки
Если вы не хотите, чтобы макрос начинался с ячейки A1 (например, с другого столбца), измените числа в 3-й и 5-й строках.
Для этого лучше предварительно обработать данные, чем использовать макросы ...