【发布时间】:2020-03-15 23:28:20
【问题描述】:
第一张图片是我的数据集Col A 到col AX,部分宏将方程放入AY。
图 2 是我想要的完美结果
col A 是报告级别,col AY 是 A 的修剪版本。col B 是项目/文档行,L 是项目,blank 是文档。 col c 是项目计数器(每个新项目增加 10,但在 doc 中保持),从该级别的最后一个项目中拾取。这些对于最终目标是有用的。该目标是将未修改的报告放入文件中,一个按钮将运行宏,该宏根据报告级别和某些格式对行进行分组。
此报告/示例有 4 层,我希望代码从下到上运行并将找到的级别 4 分组 (rows 34:37),然后继续向上扫描直到第 2 行。重新启动再次从底部扫描级别3's (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
【问题讨论】:
标签: excel vba if-statement grouping