我的Excel有一列数字表示对应的层级,比如1232,帮我写一个vba的代码,来用栈的表示,把他转化成对应的层级,例如:1,1.1,1.1.1,1.2
时间: 2023-03-30 21:03:33 浏览: 83
好的,我可以回答这个问题。以下是VBA代码:
Sub ConvertToHierarchy()
Dim rng As Range
Dim cell As Range
Dim stack As New Collection
Dim output As String
Set rng = Selection '选择要转换的列
For Each cell In rng
Do While Len(cell.Value) > stack.Count '如果栈的长度小于当前数字的长度,则弹出栈顶元素
stack.Remove stack.Count
Loop
stack.Add cell.Value '将当前数字压入栈中
output = ""
For Each item In stack '遍历栈中的元素,生成对应的层级字符串
output = output & item & "."
Next item
output = Left(output, Len(output) - 1) '去掉最后一个点
cell.Offset(, 1).Value = output '将生成的层级字符串写入相邻的单元格
Next cell
End Sub
请注意,这段代码假设你已经选择了要转换的列,并将转换后的结果写入相邻的单元格。如果你需要将结果写入原始单元格,请将“cell.Offset(, 1).Value = output”改为“cell.Value = output”。