vba公式下拉至指定行?

文件属性:XLSX
以下为录制宏代码

Sub 公式下拉()
'
' 公式下拉 宏
'

'
Range("A1").Select
ActiveCell.FormulaR1C1 = "=IF(MOD(ROW(),47)=0,47,MOD(ROW(),47))"
Selection.AutoFill Destination:=Range("A1:A517"), Type:=xlFillDefault
Range("A1:A517").Select
End Sub

场景是A:A517,长度不固定,那么517我放在一个固定单元格内R5,实际上R5中已经统计了一列的的长度,因中间有空行,阻断了公式双击下拉,所以需要手动下拉至指定行。
请问下,这个代码如何修改,实际是我想将A517改成A连接R5单元格内的数值。

Sub 公式下拉()

Dim i, irow As Integer

irow = Range("d65536").End(xlUp).Row

'假设D列是用来参照公式下拉到什么位置的,假设D列最后一个单元格是D577,那么A列将填充到A577,而不管D1:D577中间是否有空白单元格的存在。

‘irow 你也可以换成你所谓的R5的值

For i = 1 To irow

'for i= 1 to range("r5").value

    If i Mod 47 = 0 Then

        Cells(i, 1) = 47

    Else

        Cells(i, 1) = i Mod 47

    End If

Next

End Sub

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-09-22
Sub 试试1()
Range("A1") = "=IF(MOD(ROW(),47)=0,47,MOD(ROW(),47))"
Range("A1:A" & Range("R5")).FillDown '向下填充
End Sub
【提示】:
仔细观察这条公式,这条公式在下拉填充时,每个单元格的公式都完全一样,不会出现公式所引用单元格行号需要变化的情况,所以也可以直接这样写代码:
Sub 试试2()
Range("A1:A" & Range("R5")) = "=IF(MOD(ROW(),47)=0,47,MOD(ROW(),47))"
End Sub本回答被提问者采纳