我正在尝试为只有一列的简单Excel电子表格编写一个宏。基本上我有一个很长的列表(5000行或更多)。它是编号对象ID的列表,如下所示:
-b
我的目标是在每组90个对象之前添加5行文本和一行空行。所以它看起来像这样:
-n
我要添加的5个文本字符串都只是一个单词,并且是在90个对象的每个块之间添加的相同字符串。现在我有一个宏将插入空白行,我手动浏览并在运行后手动复制/粘贴文本的5个单元格。这是我使用的宏代码:
top -b -n 1|grep "KiB"
请帮我修改代码,添加到我想要的文本字符串中。这仅适用于仅使用A列的电子表格。
答案 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等是多么接近真相。这会立即填充五个单元格。如果个别文本更合适,则可能需要对该部分进行调整。