Как настроить динамические табличные данные из Интернета в Excel - PullRequest
0 голосов
/ 17 октября 2018

Как настроить динамические данные, взятые из Интернета, в Excel

Пример. Данные, взятые из Интернета, отображаются, как показано ниже, при вставке в Excel / Word:

1
Application has not up for the below reasons:
a. Low Processor Speed
b. Power failure
c. Under Maintenance 
All Application issues resolved on 10/04
2
System has to process instructions defined
System has processed these instructions:
Executing commands
Sending auto email
Logging Response status in LogViewer
3
Send email
Email sent to the below group:
BackEnd Team
Network users
Group MGRS
4
Start the application
Application started successfully

Ожидаемый табличный формат:

Sl.No     Description                                        Comments
1         Application has not up for the below reasons:      All Application issues resolved on 10/04
          a. Low Processor Speed
          b. Power failure
          c. Under Maintenance     
2         System has to process instructions defined         System has processed these instructions:
                                                             Executing commands
                                                             Sending auto email
                                                             Logging Response status in LogViewer

3         Send email                                         Email sent to the below group:
                                                             BackEnd Team
                                                             Network users
                                                             Group MGRS
4         Start the application                              Application started successfully

Я пытался использовать текст для столбцов или с разделителями и т. Д., Но не получил ожидаемый результат.

Ответы [ 3 ]

0 голосов
/ 17 октября 2018

enter image description here

Вы можете сделать это с помощью этой формулы, изменив последний параметр с +1 до +3 для каждого столбца выходных данных.

=INDEX(A:A,(ROW()-1)*3+1)

На рисунке показана формула, используемая для третьего столбца

Обратите внимание, что если ваши входные или выходные данные не начинаются со строки 1, вам необходимо изменить их следующим образом:

enter image description here

т.е. поместите формулу =INDEX($A:$A,(ROW(A1)-1)*3+ROW($A$6)+COLUMN(A3)-1) в ячейку, в которой вы хотите начать вывод.Измените $A:$A на столбец, содержащий ваши входные данные, и $A$6 на ячейку, где начинаются ваши входные данные.

0 голосов
/ 17 октября 2018

Код предполагает, что в ваших данных нет пустых ячеек, и я помещаю исходные данные в столбец A.

Первая часть кода предназначена для изменения кода для ваших нужд.

Вы задаете имя листа: ActiveWorkbook.Worksheets("Sheet1")

Вы сами решаете, какую строку начинать (включая заголовок): startrow = 1

А также, какие имена должны быть в новых перемещаемых столбцахto: SheetName.Cells(1, 2) = "Sl.No" и т.д ..

Обратите внимание, что в коде создается вся новая таблица (копирование и вставка), старый столбец с данными будет удален в конце.

Код VBA

Sub MoveCells()

Dim lrow As Integer
Dim lrowno As Integer
Dim lrowname As Integer
Dim lrowcity As Integer

Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim startrow As Integer
Dim SheetName As Worksheet


'################## Set variables ##################
Set SheetName = ActiveWorkbook.Worksheets("Sheet1") 'Name your worksheet
startrow = 1 'Set row number you want to sart the loop from

'Name first header rows
SheetName.Cells(1, 2) = "Sl.No" 'Column B = 2
SheetName.Cells(1, 3) = "Name" 'Column C = 3
SheetName.Cells(1, 4) = "City" 'Column D = 4


'################## Execute Code ##################
lrow = Cells(Rows.Count, 1).End(xlUp).Row 'Check the last row in Column A.

For i = startrow + 1 To lrow Step 3 'start from row 1 and add 1 row. Then loop to row lrow. After every loop it jump 3 rows.
lrowno = Cells(Rows.Count, 2).End(xlUp).Row 'Find last row in column B
SheetName.Cells(lrowno + 1, 2) = SheetName.Cells(i, 1) 'Copy Cells from Column A to Column B's last row
Next i

For j = startrow + 2 To lrow Step 3 'start from row 1 and add 2 rows. Then loop to row lrow. After every loop it jump 3 rows.
lrowname = Cells(Rows.Count, 3).End(xlUp).Row 'Find last row in Column C
SheetName.Cells(lrowname + 1, 3) = SheetName.Cells(j, 1) 'Copy Cells from Column A to Column C's last row
Next j

For k = startrow + 3 To lrow Step 3 'start from row 1 and add 3 rows. Then loop to row lrow. After every loop it jump 3 rows.
lrowcity = Cells(Rows.Count, 4).End(xlUp).Row 'Find last row in Column D
SheetName.Cells(lrowcity + 1, 4) = SheetName.Cells(k, 1) 'Copy Cells from Column A to Column D's last row
Next k

'Delete first column
Columns(1).EntireColumn.Delete

End Sub
0 голосов
/ 17 октября 2018

Попробуйте использовать Сохранить исходное форматирование , чтобы сохранить форматирование того, что вы скопировали.

Ярлык -> CTRL + K

Ссылкак статье о вставке с сохранением форматирования -> https://support.office.com/en-us/article/copy-cell-data-and-paste-attributes-only-0636593a-985c-4c34-bcfa-049f470a6596

...