我有一些像这样的层级词典
并像这样将字典卸载到Excel文件中
现在,我必须以层级方式对Excel行进行分组。
我知道Excel具有range()。group函数。但是,有什么方法可以快速简便地完成操作,还是我必须扫描所有Excel文件并选择以手动方式分组的行?
我在一些虚拟示例上对此进行了测试,并且效果很好。想法是循环遍历您感兴趣的范围内的单元格,如果水平在当前单元格以下的行中更大,则将它们分组。它向下工作以构建层次结构。然后,您可以使用分组按钮显示不同的级别。
如果level列没有间断,则此代码有效(因为我使用Range.End来获取最后一个单元格)。
Sub GroupBasedOnLevel()
Dim rng_cells As Range
Dim rng_start As Range
Dim rng_end As Range
'set up some ranges, change rng_start to be appropriate
Set rng_start = Range("A2")
Set rng_end = rng_start.End(xlDown)
Set rng_cells = Range(rng_start, rng_end)
'clear previous outline
Cells.ClearOutline
'loop through level cells and group based on values below
Dim cell As Range
For Each cell In rng_cells
'get value of cell and start checking below it
Dim row_off As Integer
row_off = 1
'loop ensures level is greater below and cells are within range
Do While cell.Offset(row_off) > cell And cell.Offset(row_off).Row <= rng_end.Row
row_off = row_off + 1
Loop
'do the grouping if there are more than 1 cells below
If row_off > 1 Then
Range(cell.Offset(1), cell.Offset(row_off - 1)).EntireRow.Group
End If
Next cell
End Sub
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句