首页 新闻 会员 周边

Excel VBA代码求助,实现根据深度信息,自动分组(组合)

0
悬赏园豆:20 [待解决问题]

如下,假如我的用例层级如下

希望VBA宏,能根据第一列 “*”的信息自动组合
这里的例子中最大深度是5,
点击1

点击2

点击3

点击4、5、6.。。。 依次内推。
说明,这里是我手工创建的组合,如果用例多,目录解构比较深,就很容易手工操作出现错误,故希望能通过VBA脚本自动实现这种组合(分组)功能。

本人从没有写过VBA,希望能提供完整的script

叶帅566的主页 叶帅566 | 初学一级 | 园豆:182
提问于:2023-09-06 13:47
< >
分享
所有回答(1)
0

以下是一个可能的VBA脚本解决方案:

Sub FilterByAsterisks()
    Dim rng As Range
    Dim cell As Range
    Dim asterisksCount As Integer
    
    '设定你的范围
    Set rng = ThisWorkbook.Sheets("Sheet1").Range("A1:A100")
    
    '获得选中单元格中的 * 数量
    asterisksCount = Len(Selection.Value) - Len(Replace(Selection.Value, "*", ""))

    '对每个单元格进行循环
    For Each cell In rng
        '检查 * 的数量是否小于或等于选定值
        If (Len(cell.Value) - Len(Replace(cell.Value, "*", ""))) <= asterisksCount Then
            '保留该行
            cell.EntireRow.Hidden = False
        Else
            '隐藏该行
            cell.EntireRow.Hidden = True
        End If
    Next cell
End Sub

这段代码首先获取用户所选择的单元格中的 * 数量,然后遍历指定的范围,在其中检查每个单元格的值。如果单元格中的 * 数量小于或等于用户选择的数量,那么整行就会被保留下来;否则,整行将被隐藏。

请注意:这个脚本假设 * 只存在于列A,并且所有的数据都位于第一到第100行。如有需要,可以根据实际情况调整这个范围

npe0 | 园豆:1299 (小虾三级) | 2023-09-12 11:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册