Excel VBA:如何插入行并添加文本字符串

时间:2015-05-13 19:37:17

标签: excel vba excel-vba

我正在尝试为只有一列的简单Excel电子表格编写一个宏。基本上我有一个很长的列表(5000行或更多)。它是编号对象ID的列表,如下所示:

-b

我的目标是在每组90个对象之前添加5行文本和一行空行。所以它看起来像这样:

-n

我要添加的5个文本字符串都只是一个单词,并且是在90个对象的每个块之间添加的相同字符串。现在我有一个宏将插入空白行,我手动浏览并在运行后手动复制/粘贴文本的5个单元格。这是我使用的宏代码:

top -b -n 1|grep "KiB"

请帮我修改代码,添加到我想要的文本字符串中。这仅适用于仅使用A列的电子表格。

2 个答案:

答案 0 :(得分:0)

试试这个宏:

Sub CommandButton21_Click()
    Dim LastRow As Long
    Dim RowNdx As Long
    LastRow = Cells(Rows.Count, "A").End(xlUp).Row
    For RowNdx = 1 To LastRow Step 96
        Rows(RowNdx).Insert
        Rows(RowNdx).Insert
        Cells(RowNdx, 1).Value = "textAdded5"
        Rows(RowNdx).Insert
        Cells(RowNdx, 1).Value = "textAdded4"
        Rows(RowNdx).Insert
        Cells(RowNdx, 1).Value = "textAdded3"
        Rows(RowNdx).Insert
        Cells(RowNdx, 1).Value = "textAdded2"
        Rows(RowNdx).Insert
        Cells(RowNdx, 1).Value = "textAdded1"
    Next RowNdx
End Sub

答案 1 :(得分:0)

通常,在循环中插入或删除行时,您将从底部开始并进行处理,以便插入/删除的行不会干扰您的迭代计数。

Sub insert_6_every_90()
    Dim rw As Long, lr As Long, stp As Long

    stp = 90

    With ActiveSheet   'set worksheet properly like With Sheets("Sheet1")!
        lr = Int(.Cells(Rows.Count, 1).End(xlUp).Row / stp) * stp + 1
        For rw = lr To 1 Step -stp
            .Cells(rw, 1).Resize(6, 1).EntireRow.Insert
            .Cells(rw, 1).Resize(5, 1).Formula = "=text(row(1:1), ""\t\e\x\t\a\d\d\e\d0"")"
            .Cells(rw, 1).Resize(5, 1) = .Cells(rw, 1).Resize(5, 1).Value
        Next rw
    End With
End Sub

我不确定 Textadded0,Textadded1等是多么接近真相。这会立即填充五个单元格。如果个别文本更合适,则可能需要对该部分进行调整。