Excel 基于数据层级位置的连续编号顺序

Excel Sequential Numbering order based on hierarchy position of data

我需要根据 excel 中数据的列表位置在 excel 中添加连续编号顺序。我已经尝试了很多方法来解决这个问题,但肯定有一个简单的解决方案。

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

我想到的唯一解决方案是在每列前面添加列,根据非空白过滤记录,然后从左到右手动添加序列,但即使这样也太费时了。

接下来我将研究宏,但认为使用公式可能有更简单的解决方案。 - 如果找到会更新。

这可能不是最有效的解决方案,但它有效:

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