我希望Excel为我添加的每一行自动编号,并使用一个连续的唯一标识符,该标识符取决于我分配给该行的资历级别。 (例如,如果该行是级别2,则任务号应为2.1;如果下一个任务是级别1,则任务号应为3)。最后,我希望它是动态的,因此,如果我要在列表的中间添加一行,则随后的所有任务编号都应该变大。
我在线创建了VBA代码,但没有一个完全符合我的目的。想知道是否有人为此目的。谢谢你的帮助!
Level | Task No.
1 | 1
2 | 1.1
2 | 1.2
1 | 2
2 | 2.1
2 | 2.2
1 | 3
2 | 3.1
请在此处查看表格插图:
答案 0 :(得分:0)
没有评论,但您应该可以关注...
Sub Label()
Const MAX_LEVELS As Long = 10
Dim levels(1 To MAX_LEVELS) As Long, i As Long, x As Long
Dim c As Range, s
Set c = ActiveSheet.Range("A1")
Do While Len(c.Value) > 0
s = ""
i = c.Value
levels(i) = levels(i) + 1
For x = i + 1 To MAX_LEVELS
levels(x) = 0
Next x
For x = 1 To i
s = s & IIf(s <> "", ".", "") & levels(x)
Next x
With c.Offset(0, 1)
.NumberFormat = "@"
.Value = s
End With
Set c = c.Offset(1, 0)
Loop
End Sub
请注意,它不会检查您是否在正确地遵循编号方案(即,如果您直接从1级转到4级,则不会发出警告)