使用存储的整数作为单元格引用

Using a stored integer as a cell reference

Dim x As Integer
Dim y As Integer
For y = 3 To 3
For x = 600 To 1 Step -1
    If Cells(x, y).Value = "CD COUNT" Then
        Cells(x, y).EntireRow.Select
        Selection.EntireRow.Hidden = True
        End if
If Cells(x, y).Value = "CD Sector Average" Then
        Cells(x, y).EntireRow.Select
        Selection.Insert Shift:=xlDown
        Cells(x + 1, y - 1).Select
        ActiveCell.FormulaR1C1 = "=R[0]C[1]"
        Cells(x + 1, y + 1).Select
        Selection.ClearContents
        Cells(x + 1, y + 2).Select
        Selection.ClearContents
        Cells(x + 1, y + 3).Select
        Selection.ClearContents
        Cells(x + 1, y + 4).Select
        ActiveCell.FormulaR1C1 = ***"=sum(R[This is what I need to change]C:R[-3]C"***
        Cells(x + 2, y).Select
    End If

我需要使带星号的公式作为一个列的总和出现,该列结束于行业平均行上方 3 行,并开始显示在计数行的单元格中的数字。

我在 count if 语句中试过这个没有用

Dim count As Integer
count = Cells(x , y).Value

然后在单元格引用中使用计数变量时出错。 任何提示都会有所帮助,或者如果我做错了请告诉我。

您必须找到适合输入目标单元格的公式。然后您将使用字符串连接等构建这样的公式,以便通过 VBA.

输入它

公式的一个选项是使用 OFFSET,如

=SUM(OFFSET($A,D3-1,COLUMN()-1):OFFSET($A,ROW()-3-1,COLUMN()-1))

这会将单元格 1 到单元格 2 的所有值相加,在您放置公式的同一列中。单元格1:在D3中的值所指示的行,单元格2:包含公式的单元格上方3行。

另一种选择是使用 INDIRECT,如

=SUM(INDIRECT("C"&D3):INDIRECT("C"&(ROW()-3)))

这对 C 列中从单元格 1 到单元格 2 的所有值求和。单元格 1:在 D3 中的值指示的行,单元格 2:包含公式的单元格上方 3 行。

您已经在使用 Cells(row, col) 来引用您的位置,因此您已经确切地知道自己在哪一行。因此:

ActiveCell.FormulaR1C1 = "=sum(R[" & x-3 & "C:R[" & X & "]C"

会给你 Row("CD Sector Average")-3Row("CD Sector Average")。根据需要调整 x-3x,因为我不能 100% 确定您需要汇总哪些行。

此外,既然您已经使用宏录制器获取基本代码(顺便说一句,这是一个很好的起点,但它会教会您 糟糕 编码习惯),阅读 How to avoid using Select in Excel VBA macros 以了解如何清理代码。