首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据值对行进行分组

根据值对行进行分组
EN

Stack Overflow用户
提问于 2022-03-30 16:10:45
回答 1查看 138关注 0票数 0

我已经做了一堆搜索,无法找到/想出如何自动分组的材料清单,我有。它是近70K行的数据,每月更新一次,没有分组。如果没有分组,就很难导航。它确实在A列中列出了缩进级别(1-12),这是我用来将层次结构与顶部的汇总行(参见示例) BOM分组组合在一起的。Excel只能进行八个级别的分组,但是大部分的部件分解都在4-10级。“自动提纲”不起作用。我试着用手动的方式录了一个宏,但没走多远。我对VBA和宏非常陌生,更不用说编写代码了,我真的不知道要搜索什么或者从哪里开始,所以任何帮助都将是非常感谢的。提前谢谢你。

EN

回答 1

Stack Overflow用户

发布于 2022-04-07 00:16:52

很抱歉@PeterT和@dbmitch没有早点回复。幸运的是,我们得到的文件已经创建了宏,但没有运行。我想分享代码,以防其他人想做同样的事情。

代码语言:javascript
复制
Sub User_Create_Collapsible_Tree()
'    UseSheet = "Output"
'    Sheets(UseSheet).Select
'
'    ' Create groups for collapsing tree
'    With Sheets(UseSheet)
 With Sheets(ActiveSheet.Name)

 Range("A3").Select

    ' Can only group max of 8 levels, so start grouping everything above 8
    For counter = 11 To 3 Step -1
            
        Range("A3").Select
        
        TOP_ROW = 0
        BOTTOM_ROW = 0
        
        R = 3
        Do Until .Cells(R, 1) = ""
        
            If .Cells(R, 1) > counter Then
            
                If TOP_ROW = 0 Then
                
'                        TOP_ROW = .Cells(R, 1)
                    TOP_ROW = R
                    
                End If
                
'                    BOTTOM_ROW = .Cells(R, 1)
                BOTTOM_ROW = R
                
            Else
            
                If TOP_ROW <> 0 Then
            
                    'HOLD_CELL = ActiveCell.Address
'                        Range(Rows(TOP_ROW), Rows(BOTTOM_ROW)).Select
'                        Selection.Columns.Group
                    TOP_TO_BOTTOM = TOP_ROW & ":" & BOTTOM_ROW
                    Rows(TOP_TO_BOTTOM).Group
                    
                    TOP_ROW = 0
                    'Range(HOLD_CELL).Select
                    
                End If
                
            End If
            
            R = R + 1
        
        Loop
        
        If TOP_ROW <> 0 Then
            
'                Range(Rows(TOP_ROW), Rows(BOTTOM_ROW)).Select
'                Selection.Columns.Group
            TOP_TO_BOTTOM = TOP_ROW & ":" & BOTTOM_ROW
            Rows(TOP_TO_BOTTOM).Group
            
        End If
    Next
End With

Range("A3").Select

End Sub

这将返回类似于这个分组的结果。唯一需要更改的是级别范围。因为excel只能做八个级别,所以我把它从"8到1“改为"11到3”,它工作得很漂亮。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71680633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档