在Excel宏中引用行号的公式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Excel宏中引用行号的公式相关的知识,希望对你有一定的参考价值。

我正在尝试制作一个宏,它将根据实际需要的数量自动填充多个页面。从另一个工作簿导入的每个项目都将收到自己的“页面”。这些页面位于一张纸上,由打印区域分隔。目前我有一个计数器,它计算需要页面的项目数(在我的例子中为11),然后我有一个每页行数的值(34)。将它们相乘以确定要自动填充的行数(374)。问题是让宏用数字替换范围变量(374)。

我试图使用间接功能,但收到编译错误:“预期:列表分隔符或)”我也尝试了偏移功能,但收到相同的错误。

到目前为止这是我的宏:

Sub Sheet_Fill()

Sheet_Fill Macro

 ActiveCell.Range("A1:I34").Select

  Selection.AutoFill Destination:=ActiveCell.Range("A1:I68"), Type:= _
        xlFillDefault

ActiveCell.Range("A1:I68").Select

End Sub

基本上,我想用我之前提到的公式自动填充I列的行号的东西替换“I68”。在11个零件的示例情况下,该数字将自动填充“374”

答案

您的宏的原始版本应该是这样的:

Sub Sheet_Fill()

'Sheet_Fill Macro

Dim rownum As Long
rownum = 374 'Or a range? Where is this number located?

 ActiveCell.Range("A1:I34").Select

  Selection.AutoFill Destination:=ActiveCell.Range("A1:I" & rownum), Type:= _
        xlFillDefault

ActiveCell.Range("A1:I" & rownum).Select

End Sub

清理了一下(这应该工作):

Sub Sheet_Fill()

    Dim rownum As Long
    rownum = 374 'Or a range? Where is this number located?

    Range("A1:I34").AutoFill Destination:=ActiveCell.Range("A1:I" & rownum), Type:=xlFillDefault

End Sub

需要一些关于你存储这个374的更多细节 - 它是否在一个单元格中?可以从您的表格设置中计算出来吗?在给出答案之前,这是我能做的最好的事情。

另一答案

尝试:

Selection.AutoFill Destination:=ActiveCell.Range("A1:I" & lr), Type:= xlFillDefault

其中lr是最后一行......你要么想要动态地确定它,要么你可以指定从一个单元格中拉取一个值,例如:

'dynamic
lr = sheets(1).cells(sheets(1).rows.count,1).end(xlup).row

'from a cell
lr = sheets(1).range("A1").value

一般评论...... avoid using select/activate!

以上是关于在Excel宏中引用行号的公式的主要内容,如果未能解决你的问题,请参考以下文章

excel公式问题,获取行号列号之后,如何获取该单元格内的值。

更改单元格引用的 VBA 到 FillDown 公式

尝试将 Vlookup 片段添加到我的 Excel 宏

excel表格里的RC是啥意思?

excel公式index()不返回动态行号-EXCEL 2013的行

Excel需在公式中引入某一单元格数值。该单元格列号为C(定值);行号为指定单元格的数值(自由输入)。