在特定文本(文本出现次数)vba-excel下面插入行

时间:2014-07-30 09:00:22

标签: excel vba excel-vba insert rows

此代码搜索A列中的所有“ - ”,当它在单元格中找到该字符时,在下面添加一个新行:

    Sub insertRow()
      Dim c As Range
      For Each c In Range("A:A")
        If c.Value Like "*-*" Then
            c.Offset(1, 0).EntireRow.Insert
        End If
      Next c        
    End Sub

我想在每个“ - ”下面插入一行。如果单元格中有三个“ - ”,我想在该行下面添加三行,并在每个“ - ”后放入文本。我怎样才能做到这一点?

例如为:
        A栏:
        STR1,STR2-STR3,STR4
        STR5
        STR6,STR7
        STR8-STR9-str10
        str11-

结果如下:
        A栏:
        STR1
        STR2
        STR3
        STR4
        STR5
        STR6
        STR7
        STR8
        STR9
        str10
        str11

任何人都可以帮助我吗?谢谢!

1 个答案:

答案 0 :(得分:0)

像下面这样的东西应该工作 - 它依赖于数组基础0默认索引。如果执行时间是一个问题,可能有方法优化

Sub t_exe566965()
    Dim r As Range
    Dim a As Variant
    For Each r In Range("A:A")
        If r.Value Like "*-*" Then
            Debug.Print True
            a = Split(r.Value, "-")
            r.Offset(1, 0).Resize(UBound(a)).EntireRow.Insert Shift:=xlDown
            For i = LBound(a) To UBound(a)
                r.Offset(i, 0).Value = a(i)
            Next i
        End If
    Next r

End Sub