我在报告的单元格D5:D103中有一系列公式,它们链接到书中的另一张纸。列A:C包含文本结果,列D具有$ amount作为结果。 A4:D4包含数据的标题,A1:D3是描述报告的一般标题。最后一行的位置将每月更改,可以是> 103,可以是<103。
在每16行数据之后,我需要从工作表中的命名范围中插入3行4列,并在3行中的第2行的D列中插入总共16行。然后我在下面添加一个分页符(由其他要求决定的粗分页练习)。
以下代码实现了大部分内容: -
Dim Formula1 As String
Formula1 = "=SUM(R[-17]C:R[-2]C)"
For i = 21 To (Range("a5", Range("d4").End(xlDown)).Rows.Count + 4) Step 19
Range("Total_credit").Select
Selection.Copy
Range("a" & i).Select
Selection.Insert Shift:=xlDown
Range("a" & i).Offset(1, 3) = Formula1
Selection.Offset(3).PageBreak = xlPageBreakManual
Next i
但是,我在底部留下了19行数据块,它应该是带有粘贴文本的16个块的16个块,并且每个块下面总共有一个(理想情况下,最后一个序列中没有空行,但是如果我可以得到其余的权利,我可以忍受。)当我将数据块放大几行时,似乎也会出现同样的问题,即最后一个总数将始终位于同一位置(D117)。
似乎i的值正在递增每个循环,但这似乎没有在过程中反映出来。我已经尝试了各种各样的东西并彻底搜查无济于事,我的脑袋现在正在旋转。我相信有人会立刻看到我出错的地方,看起来应该是一个简单的修复。
提前致谢。
答案 0 :(得分:1)
我刚刚在您的代码中添加了这个来管理'for loop'限制
Dim row_count As Double
row_count = Range("a5", Range("d5").End(xlDown)).Rows.Count
row_count = row_count + Round(row_count / 16) * 3 + 4
For i = 21 to row_count step 19 'change limit to the variable "row_count"
这应该注意'For loop'限制。或者您可以将其更改为Do While
循环,您的受控变量可以更改。像这样:
Dim Formula1 As String
Dim row_count As Long
Formula1 = "=SUM(R[-17]C:R[-2]C)"
'initialize variable
row_count = Range("a5", Range("d5").End(xlDown).Address).Rows.Count + 4
i = 21 'initialize variable
'I added this before the loop to make the appearance clean
Cells.PageBreak = xlPageBreakNone
Do While i < row_count
Range("Total_credit").Copy: Range("a" & i).Insert xlDown
Range("a" & i).Offset(1, 3) = Formula1
Range("a" & I).Offset(3, 0).PageBreak = xlPageBreakManual
i = i + 19 'increment variable
're-initialize variable
row_count = Range("a5", Range("d5").End(xlDown).Address).Rows.Count + 4
Loop
希望这就是你所需要的。