基于数据层次位置的Excel顺序编号顺序

我需要根据excel中的数据列表位置在excel中添加顺序编号顺序。 我已经尝试了很多事情来获得这个权利,但肯定必须有一个简单的解决scheme。

在这里输入图像说明

正如你所看到的,我的数据是一个有序的文本列表,您可以在这些行中看到数据偏移中的层次结构。 我正在尝试根据左侧的数据自动创build黄色图片。

我想出的唯一解决scheme是在每列之前添加列,根据非空白过滤logging,然后从左到右手动添加序列,但即使这样也太耗时。

我下一步正在研究一个macros,但认为使用公式可能会有一个更简单的解决scheme。 – 如果find,会更新。

这可能不是最有效的解决scheme,但它的工作原理: 在这里输入图像说明

G2公式(用其填充区域的其余部分):

 =IF(ISBLANK(A2),IF(ISBLANK(B2),G1,G1+1),0) 

L2公式(用其填充区域的其余部分):

 =IF(G2>0,K2&"."&G2,"") 

Q2公式(填补其余的领域):

 =IF(ISBLANK(B2),"",MID(L2,2,LEN(L2))&" - "&B2) 

您可以通过增加区域大小轻松地使用它,但需要在每个区域左侧留出空的顶行和空列以使其工作。

您可以通过组合最后两个公式来跳过L:O区域。

结果: 在这里输入图像说明

公式:(蓝色是常量,橙色是第一层级,绿色是在框中拖动) 在这里输入图像说明

 Sub Sequential_Numbering() Dim tmpRange As Range, tmpArray(1 To 4) As Integer, x As Integer Set tmpRange = Range("A1") tmpArray(1) = 1 tmpRange.Value = tmpArray(1) & " - " & tmpRange.Value For x = 2 To 13 Set tmpRange = Rows(x).Find(What:="*") Select Case tmpRange.Column Case 1 tmpArray(1) = tmpArray(1) + 1 tmpArray(2) = 0 tmpArray(3) = 0 tmpArray(4) = 0 tmpRange.Value = tmpArray(1) & " - " & tmpRange.Value Case 2 tmpArray(2) = tmpArray(2) + 1 tmpArray(3) = 0 tmpArray(4) = 0 tmpRange.Value = tmpArray(1) & "." & tmpArray(2) & " - " & tmpRange.Value Case 3 tmpArray(3) = tmpArray(3) + 1 tmpArray(4) = 0 tmpRange.Value = tmpArray(1) & "." & tmpArray(2) & "." & tmpArray(3) & " - " & tmpRange.Value Case 4 tmpArray(4) = tmpArray(4) + 1 tmpRange.Value = tmpArray(1) & "." & tmpArray(2) & "." & tmpArray(3) & "." & tmpArray(4) & " - " & tmpRange.Value End Select Next x End Sub