Excel工作表布局:垂直堆叠的10个数据表,每个表之间有一个空白行。
目标:群组&隐藏10个表中每个表中的空白数据行(因为并非每个表中的所有行都将返回数据)。
代码:按行逐个测试每个表。一旦它为空行测试为TRUE,它就会退出DO LOOP并将该单个表的其余部分从空白行隐藏到结束行。它移动到下一个表并测试/隐藏此表的空白行... ETC.在所有表格都经过测试并且所有空白行都被分组/隐藏之前。
问题:我希望所有分组都属于一个分组级别。因此,excel表格左上角的“组级别”将仅显示“1,2”作为选项,并且所有分组同时隐藏/关闭。运行此代码后,它显示8个不同的组级别“1,2,3,4,5,6,7,8”。
我如何获得我的代码以放弃一个小组级别的所有分组?
'Group Attribute Rollups
x = linesheet_rollupatt11_row
Do Until x > linesheet_rollupatt125_row
If Cells(x, linesheet_brand_clmn) = "" Then
att1_count = x
Exit Do
End If
x = x + 1
Loop
x = linesheet_rollupatt21_row
Do Until x > linesheet_rollupatt225_row
If Cells(x, linesheet_brand_clmn) = "" Then
att2_count = x
Exit Do
End If
x = x + 1
Loop
x = linesheet_rollupatt31_row
Do Until x > linesheet_rollupatt325_row
If Cells(x, linesheet_brand_clmn) = "" Then
att3_count = x
Exit Do
End If
x = x + 1
Loop
x = linesheet_rollupatt41_row
Do Until x > linesheet_rollupatt425_row
If Cells(x, linesheet_brand_clmn) = "" Then
att4_count = x
Exit Do
End If
x = x + 1
Loop
x = linesheet_rollupatt51_row
Do Until x > linesheet_rollupatt525_row
If Cells(x, linesheet_brand_clmn) = "" Then
att5_count = x
Exit Do
End If
x = x + 1
Loop
x = linesheet_rollupatt61_row
Do Until x > linesheet_rollupatt625_row
If Cells(x, linesheet_brand_clmn) = "" Then
att6_count = x
Exit Do
End If
x = x + 1
Loop
x = linesheet_rollupatt71_row
Do Until x > linesheet_rollupatt725_row
If Cells(x, linesheet_brand_clmn) = "" Then
att7_count = x
Exit Do
End If
x = x + 1
Loop
x = linesheet_rollupatt81_row
Do Until x > linesheet_rollupatt825_row
If Cells(x, linesheet_brand_clmn) = "" Then
att8_count = x
Exit Do
End If
x = x + 1
Loop
x = linesheet_rollupatt91_row
Do Until x > linesheet_rollupatt925_row
If Cells(x, linesheet_brand_clmn) = "" Then
att9_count = x
Exit Do
End If
x = x + 1
Loop
x = linesheet_rollupatt101_row
Do Until x > linesheet_rollupatt1025_row
If Cells(x, linesheet_brand_clmn) = "" Then
att10_count = x
Exit Do
End If
x = x + 1
Loop
x = linesheet_rollupatt111_row
Do Until x > linesheet_rollupatt1125_row
If Cells(x, linesheet_brand_clmn) = "" Then
att11_count = x
Exit Do
End If
x = x + 1
Loop
If Cells(linesheet_rollupatt1header_row, linesheet_vendorname_clmn).Value = "" Then
Rows(linesheet_rollupatt1header_row & ":" & linesheet_rollupatt125_row).Select
Selection.Rows.Group
Else
Rows(att1_count & ":" & linesheet_rollupatt125_row).Select
Selection.Rows.Group
End If
If Cells(linesheet_rollupatt2header_row, linesheet_vendorname_clmn).Value = "" Then
Rows(linesheet_rollupatt2header_row & ":" & linesheet_rollupatt225_row).Select
Selection.Rows.Group
Else
Rows(att2_count & ":" & linesheet_rollupatt225_row).Select
Selection.Rows.Group
End If
If Cells(linesheet_rollupatt3header_row, linesheet_vendorname_clmn).Value = "" Then
Rows(linesheet_rollupatt3header_row & ":" & linesheet_rollupatt225_row).Select
Selection.Rows.Group
Else
Rows(att3_count & ":" & linesheet_rollupatt325_row).Select
Selection.Rows.Group
End If
If Cells(linesheet_rollupatt4header_row, linesheet_vendorname_clmn).Value = "" Then
Rows(linesheet_rollupatt4header_row & ":" & linesheet_rollupatt225_row).Select
Selection.Rows.Group
Else
Rows(att4_count & ":" & linesheet_rollupatt425_row).Select
Selection.Rows.Group
End If
If Cells(linesheet_rollupatt5header_row, linesheet_vendorname_clmn).Value = "" Then
Rows(linesheet_rollupatt5header_row & ":" & linesheet_rollupatt225_row).Select
Selection.Rows.Group
Else
Rows(att5_count & ":" & linesheet_rollupatt525_row).Select
Selection.Rows.Group
End If
If Cells(linesheet_rollupatt6header_row, linesheet_vendorname_clmn).Value = "" Then
Rows(linesheet_rollupatt6header_row & ":" & linesheet_rollupatt225_row).Select
Selection.Rows.Group
Else
Rows(att6_count & ":" & linesheet_rollupatt625_row).Select
Selection.Rows.Group
End If
If Cells(linesheet_rollupatt7header_row, linesheet_vendorname_clmn).Value = "" Then
Rows(linesheet_rollupatt7header_row & ":" & linesheet_rollupatt225_row).Select
Selection.Rows.Group
Else
Rows(att7_count & ":" & linesheet_rollupatt725_row).Select
Selection.Rows.Group
End If
If Cells(linesheet_rollupatt8header_row, linesheet_vendorname_clmn).Value = "" Then
Rows(linesheet_rollupatt8header_row & ":" & linesheet_rollupatt225_row).Select
Selection.Rows.Group
Else
Rows(att8_count & ":" & linesheet_rollupatt825_row).Select
Selection.Rows.Group
End If
If Cells(linesheet_rollupatt9header_row, linesheet_vendorname_clmn).Value = "" Then
Rows(linesheet_rollupatt9header_row & ":" & linesheet_rollupatt225_row).Select
Selection.Rows.Group
Else
Rows(att9_count & ":" & linesheet_rollupatt925_row).Select
Selection.Rows.Group
End If
If Cells(linesheet_rollupatt10header_row, linesheet_vendorname_clmn).Value = "" Then
Rows(linesheet_rollupatt10header_row & ":" & linesheet_rollupatt225_row).Select
Selection.Rows.Group
Else
Rows(att10_count & ":" & linesheet_rollupatt1025_row).Select
Selection.Rows.Group
End If
If Cells(linesheet_rollupatt11header_row, linesheet_vendorname_clmn).Value = "" Then
Rows(linesheet_rollupatt11header_row & ":" & linesheet_rollupatt225_row).Select
Selection.Rows.Group
Else
Rows(att11_count & ":" & linesheet_rollupatt1125_row).Select
Selection.Rows.Group
End If
答案 0 :(得分:0)
这可能是因为您的分组重叠而发生的。假设您的所有数据都在一列中,并且表之间只有一个空白行,您应该将分组开始减少一行或者将它们结束一行。
另外,请考虑避免选择(通过.Select,然后选择Selection.Rows.Group)。请参阅下面的代码示例。
要将分组结束一行,请更改
Rows(linesheet_rollupatt1header_row & ":" & linesheet_rollupatt125_row).Select
Selection.Rows.Group
与
类似的行Rows(linesheet_rollupatt1header_row & ":" & linesheet_rollupatt125_row - 1).Group
或者,要稍后开始分组行,请添加" + 1"到每个起始行,例如
Rows(linesheet_rollupatt1header_row + 1 & ":" & linesheet_rollupatt125_row).Group
或
Rows(att2_count + 1 & ":" & linesheet_rollupatt225_row).Group