我需要根据excel中数据的列表位置在excel中添加顺序编号顺序。我已经尝试了许多方法来做到这一点,但肯定必须有一个简单的解决方案。
正如您所看到的,我的数据是一个有序的文本列表,您可以在其中查看行中数据偏移的层次结构。我试图根据左侧的数据自动创建黄色图片。
我提出的唯一解决方案是在每列前面添加列,根据非空白过滤记录,然后从左到右手动添加序列,但即使这样也太耗时。
我接下来会研究一个宏,但认为使用公式可能会有更简单的解决方案。 - 如果找到则会更新。
答案 0 :(得分:1)
这可能不是最有效的解决方案,但它有效:
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区域。
答案 1 :(得分:1)
<强>结果:强>
公式:(蓝色是常量,橙色表示第一个层次结构,绿色表示在框中拖动)
答案 2 :(得分:1)
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