替换Excel上

时间:2016-03-04 10:32:05

标签: excel excel-vba vba

我有这样的列表,所有章节和子章节的格式如下所示。

__1________________________
__1__1_____________________
__1__2_____________________
__1__2__1__________________

有没有这种方法可以将此列表更改为下面的列表?

1
1.1
1.2
1.2.1

我尝试过替换,但是它用点或空格替换了所有_,从而破坏了列表性质。

有没有办法使用VBA执行此操作,它不一定是你的答案中的VBA,因为我可以使用它来格式化它以适应VBA。我有很多这样的文件包含数千行。

1 个答案:

答案 0 :(得分:1)

这似乎可以快速纠正您的样本数据。

Sub Replacing_messed_up_formatted_list()
    Dim rng As Range
    With Worksheets("Sheet4")
        With .Columns(1)
            .Replace what:=Chr(95), replacement:=Chr(46), lookat:=xlPart
            Do While Not .Find(what:=Chr(46) & Chr(46), lookat:=xlPart) Is Nothing
                .Replace what:=Chr(46) & Chr(46), replacement:=Chr(46), lookat:=xlPart
            Loop
            .Replace what:=Chr(32), replacement:=vbNullString, lookat:=xlPart
            .TextToColumns Destination:=.Cells(1), DataType:=xlFixedWidth, _
                           FieldInfo:=Array(Array(0, 9), Array(1, 2))
            For Each rng In Intersect(.Parent.UsedRange, .Cells)
                If Right(rng.Value2, 1) = Chr(46) Then rng = Left(rng.Value2, Len(rng.Value2) - 1)
            Next rng
        End With
    End With
End Sub

a1_1_1_1 A1_1_1_1_1