如何在VBA中进行行计数以查看是否需要下拉计算?

时间:2013-06-21 18:14:23

标签: excel vba excel-vba

我和Excel中的VBA一样陌生......我现在正在查看一个宏,当只返回一行数据时,它会产生一些计算问题(这会导致所有进行的行填充N / A或#REF,因为计算被拖下来了)

基本上我要做的是使用某种带有行数的 IF语句来确定计算是否应该降低。

目前,代码内容如下:

Range("I7").Select
ActiveCell.FormulaR1C1 = "=IF(RC[-2]=0,0,(RC[-1]/RC[-2])*10000)"
Range("I7").Select
Selection.Copy
Range("I8").Select
Range(Selection, Selection.End(xlDown)).Select
ActiveSheet.Paste

我认为我需要做的是,行数小于1的任何内容都不会被拉下来,否则就会拉下列。

我是以正确的方式接近这个吗?有更简单的方法吗?

1 个答案:

答案 0 :(得分:1)

我认为你不需要行数。我想你只需要将公式应用于从第7行开始直到最后一个填充行的第I列中的所有单元格。在我的例子中,我正在检查H列中的最后一行。

这是你如何做到的:

Sub AddFormulaToColumn()
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim rng As Range
    Dim lastRow As Long

    Set wb = ThisWorkbook
    Set ws = wb.Sheets("Sheet1")
    lastRow = Range("H" & ws.Rows.Count).End(xlUp).Row

    Set rng = ws.Range("I7:I" & lastRow)
    rng.Formula = "=IF(RC[-2]=0,0,(RC[-1]/RC[-2])*10000)"
End Sub

您可以通过将ws定义更改为您要使用的工作表来修改此项,如果最后一行位于“H”以外的列中,也可以修改它。