1

我对 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 的任何内容都不会被拉下,否则将列拉下。

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

4

1 回答 1

1

我认为您不需要行数。我认为您只需要将公式应用于 I 列中的所有单元格,从第 7 行开始一直到最后填充的行。在我的示例中,我正在检查 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”以外的列中,也可以修改它。

于 2013-06-21T18:56:50.110 回答