Первое изображение - это мой набор данных Col A
через col AX
, часть макроса переводит уравнение в AY
.
image 2 - мой желаемый идеальный результат
col A
- это уровень отчета, col AY
- урезанная версия A. col B
- это элемент / do c строка, L
для элемента, blank
для do c. col c
- счетчик предметов (увеличивается на 10 с каждым новым предметом, но сохраняется, если делать c), поднимается с последнего предмета на этом уровне. Все это полезно для конечной цели. Эта цель состоит в том, чтобы поместить нетронутый отчет в файл, кнопка запускает макрос, который группирует строки в соответствии с уровнем отчета и некоторым форматированием.
Этот отчет / пример имеет 4 слоя, я хотел бы код запустить снизу вверх и сгруппировать найденные уровни 4
(rows 34:37
), затем продолжить сканирование вверх до строки 2. Снова перезапустите сканирование снизу для уровня 3
(rows 31:44, 15:16
) , перезапустите и найдите 2
, затем перезапустите и найдите 1
. Уровни, которые выходят из отчета, могут достигать 25.
Вот мой код, и он не группируется должным образом, поэтому открыт для любых предложений.
Sub FORMAT_SAP_ZPL_BOMEX_report_MK_01_01()
'
' grouping_BOMEX_report Macro
'
' ========== takes report from SAP tcode "ZPL_BOMEX" and
' ========== reorginazes the dataout put into something cleaner
'
'Application.ScreenUpdating = False
With ActiveSheet.Outline
.AutomaticStyles = False
.SummaryRow = xlAbove
.SummaryColumn = xlLeft
End With
' \\\ get last row and column of data
Dim lrow As String
Dim nextblank As String
' \\\ last row
lrow = Cells(Rows.Count, 1).End(xlUp).Row
gmax = Application.WorksheetFunction.Max(Range("ay:ay"))
For g = gmax To 0 Step -1
For scanRow = lrow To 2 Step -1
If Range("AY" & scanRow) = g Then
Range("AZ" & scanRow) = 1
End If
Next scanRow
EndRow = Cells(Cells.Rows.Count, "AZ").End(xlUp).Row
jumpin1:
StartRow = Range("AZ" & EndRow).End(xlUp).Row
Rows(StartRow & ":" & EndRow).Rows.Group
' Rows(StartRow & ":" & EndRow).Select
' Selection.Rows.Group
nextblank = Range("AZ" & StartRow).End(xlUp).Row
If nextblank > 2 Then
EndRow = Range("AZ" & nextblank).Row
GoTo jumpin1
Else
End If
ActiveSheet.Columns(52).ClearContents
Next g
end sub