【发布时间】:2018-08-21 07:10:09
【问题描述】:
我有一长串代码,例如 008.45 等,需要多行文字来解释它们。我有代码列表,我想知道如何自动插入一行,比如第五行。下面的例子
1
2
3
4
5
6
7
8
9
10...
100
每五行我想插入给定数量的我选择的行。我怎样才能做到这一点?谢谢
【问题讨论】:
标签: excel excel-2007 vba
我有一长串代码,例如 008.45 等,需要多行文字来解释它们。我有代码列表,我想知道如何自动插入一行,比如第五行。下面的例子
1
2
3
4
5
6
7
8
9
10...
100
每五行我想插入给定数量的我选择的行。我怎样才能做到这一点?谢谢
【问题讨论】:
标签: excel excel-2007 vba
使用从第 1 行到第 100 行的范围进行测试。
Sub InsertRows()
For i = Sheet1.UsedRange.Rows.Count To 1 Step -5
For j = 0 To 4
Sheet1.Rows(i).Insert
Next
Next
End Sub
【讨论】:
您需要使用如下循环:
for i=1 to 100 step 1
if i mod 5 = 0 then
// Insert the rows
end if
next i
【讨论】:
if i mod 5 = 0 Then InsertRowsAti
这对我很有用:
Sub add_rows_n()
t = 6
Do Until Cells(t, "A") = ""
Rows(t).Insert
t = t + 6
Loop
End Sub
【讨论】:
要在 myRowNumber 行插入一行,您的 VBA 代码将如下所示:
Rows(myRowNumber).Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
您可以将其纳入安迪的回答中。
【讨论】:
或者你可以像这样使用模数函数:
=IF(MOD(ROW()-1,7),"",A1)
在 B1 中,其中 A1 是数据集的第一个数字。
注意:将 7 更改为 n 以获取每个第 n 行。
【讨论】:
例如,如果我想要在我的数据行之间有 5 条记录,我会使用 Mod 6,但是,您需要允许这些新行,因为它们会影响使用的范围计数!为此,您需要将要插入的行数添加到循环的长度中(例如,绝对值 of(numberOfRows/YourModValue))。
执行此操作的代码:
Sub InsertRows()
For i = 1 To Sheet1.UsedRange.Rows.Count + Abs(Sheet1.UsedRange.Rows.Count / 6) Step 1
If i Mod 6 = 0 Then
Sheet1.Rows(i).Insert
Cells(i, 1).Value = "Whatever data you want in your new separator cell"
End If
Next i
End Sub
【讨论】:
这是我最终得到的代码。请注意,FOR 循环实际上是从 UsedRange 的末尾开始向后运行的。 Mod 5 每 5 行插入一行。
For i = ActiveSheet.UsedRange.Rows.Count To 2 Step -1
If (i - 1) Mod 5 = 0 Then
ActiveSheet.Rows(i).Insert Shift:=xlDown
End If
Next
【讨论】: