Excel VBA和组function

我有这样的分层字典

在这里输入图像说明

并将这个字典卸载到这个Excel文件中

在这里输入图像说明

现在我必须以分层的方式对Excel行进行分组。

我知道Excel有range()。group函数。 但有没有办法做到这么简单或快捷,或者我必须扫描所有的Excel文件,并select行以手动方式进行分组?

我testing了一些虚拟的例子,它运行良好。 这个想法是循环你感兴趣的范围中的单元格,如果在当前单元格下面的行中的级别更高,则将它们分组。 它的工作方式是build立层次结构。 然后,您可以使用分组button来显示不同的级别。

如果级别列没有中断(因为我正在使用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 

结果

初始点

初始点

完整的分组

完整的分组

折叠到1级

倒塌的小组

Excel有一个内置的分组向导。 通过高亮你的数据并点击alt => d => g => g,数据将自动分组。

或者,您可以select“数据”选项卡,然后从最右侧select“组”。