根据 Excel(公式或 VBA)中的预定义级别创建层次结构
Create hierarchy based on pre-defined levels in Excel (Formula or VBA)
下面是我现在的 Excel table:
我想自动生成黄色的第三列作为所有活动的分层视图。我试图用公式解决这个挑战,但我不确定这是否是最好的方法。
有人在Excel中遇到并解决了这个需求吗?任何 advice/suggestions 指导我?
非常感谢和最诚挚的问候!
您可以将此宏粘贴到 Worksheet 的代码模块 并从那里运行粘贴:
Sub CalculateHierarchy()
Dim rLevels As Range, rLevel As Range
Dim level As Integer, maxLevels As Integer, cur As Integer, i As Integer
Dim h As String, counts() As Integer
Set rLevels = Range("A2:A" & Range("A1").End(xlDown).Row)
maxLevels = WorksheetFunction.Max(rLevels)
ReDim counts(1 To maxLevels)
cur = 1
For Each rLevel In rLevels
level = rLevel.Value
If level > cur + 1 Then
rLevel.Activate
MsgBox "error at row " & rLevel.Row & " level increase by more than 1"
Exit Sub
End If
h = ""
counts(level) = counts(level) + 1
For i = 1 To level
h = h & "." & counts(i)
Next
h = Mid(h, 2)
For i = level + 1 To UBound(counts)
counts(i) = 0
Next
rLevel.Offset(, 2).Value = h
cur = level
Next
rLevel.Offset(0, 2).Interior.ColorIndex = 6
End Sub
下面是我现在的 Excel table:
我想自动生成黄色的第三列作为所有活动的分层视图。我试图用公式解决这个挑战,但我不确定这是否是最好的方法。
有人在Excel中遇到并解决了这个需求吗?任何 advice/suggestions 指导我?
非常感谢和最诚挚的问候!
您可以将此宏粘贴到 Worksheet 的代码模块 并从那里运行粘贴:
Sub CalculateHierarchy()
Dim rLevels As Range, rLevel As Range
Dim level As Integer, maxLevels As Integer, cur As Integer, i As Integer
Dim h As String, counts() As Integer
Set rLevels = Range("A2:A" & Range("A1").End(xlDown).Row)
maxLevels = WorksheetFunction.Max(rLevels)
ReDim counts(1 To maxLevels)
cur = 1
For Each rLevel In rLevels
level = rLevel.Value
If level > cur + 1 Then
rLevel.Activate
MsgBox "error at row " & rLevel.Row & " level increase by more than 1"
Exit Sub
End If
h = ""
counts(level) = counts(level) + 1
For i = 1 To level
h = h & "." & counts(i)
Next
h = Mid(h, 2)
For i = level + 1 To UBound(counts)
counts(i) = 0
Next
rLevel.Offset(, 2).Value = h
cur = level
Next
rLevel.Offset(0, 2).Interior.ColorIndex = 6
End Sub