Переформатирование таблицы с данными - VBA
Формулировка задачи:
Добрый день, коллеги.
Нужна Ваша помощь в решении следующей задачи: имеется исходная таблица отчета по продажам, которая выгружается из 1С. Вы можете найти ее в файле на листе "Как есть".
Обычно, в ручном режиме происходит перенос данных с формата "Как есть" в формат, который Вы можете найти на листе "Как нужно".
Ввиду того, что объем данных становится все больше (на данный момент, в день количество строк с данными доходит до 1 000), соответственно процесс по их трансформации также удлиняется.
Напишите пожалуйста, каким образом, можно осуществить трансформацию данных в формат, который находится на листе "Как нужно"?
Буду признателен Вам за любую помощь.
С уважением,
Евгений
Решение задачи: «Переформатирование таблицы с данными»
textual
Листинг программы
Sub Преобразовать_чистые_продажи_2()
Dim i&, j&, k&, LastRow&, Kontragent, Region, Manager, A, B
Cells.UnMerge
Cells.ClearFormats
Rows(8).Delete
Rows("1:6").Delete
Columns("A:M").ColumnWidth = 32.5
LastRow = Cells(Rows.Count, 2).End(xlUp).Row
Range("A1:C" & LastRow).Value = Range("B1:D" & LastRow).Value
Columns("D").ClearContents
[A1] = "Код"
[b1] = "Номенклатура"
[C1] = "Единица имерения"
[f1] = "Менеджер"
[d1] = "Контрагент"
A = Range("A1:M" & LastRow).Value
ReDim B(1 To LastRow, 1 To 13)
For j = 1 To 13
B(1, j) = A(1, j)
Next
k = 1
For i = 2 To LastRow - 1
If Trim(A(i, 1)) = "" Then
If Trim(A(i, 2)) <> "" Then Kontragent = A(i, 2)
If Trim(A(i, 5)) <> "" Then Region = A(i, 5)
If Trim(A(i, 6)) <> "" Then Manager = A(i, 6)
Else
k = k + 1
For j = 1 To 13
B(k, j) = A(i, j)
Next
B(k, 4) = Kontragent
B(k, 5) = Region
B(k, 6) = Manager
End If
Next
Range("A1:M" & LastRow).Value = B
Rows(1).Font.Bold = True
End Sub