我和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的任何内容都不会被拉下来,否则就会拉下列。
我是以正确的方式接近这个吗?有更简单的方法吗?
答案 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”以外的列中,也可以修改它。