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

时间:2015-06-22 14:50:05

标签: excel excel-vba reference vba

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行结束,并启动计数行中单元格中显示的数字。

我试过这个在计数if if

中无济于事
Dim count As Integer
count = Cells(x , y).Value

然后在单元格引用中使用count变量并得到错误。 任何提示都会有所帮助,或者如果我发生错误,请告诉我。

2 个答案:

答案 0 :(得分:0)

您必须找到适合进入目标细胞的公式。然后,您将使用字符串连接等构建此类公式,以便通过VBA输入。

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

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

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

另一种选择是使用INDIRECT,如

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

这将从列C中的Cell1到Cell2的所有值相加.Cell1:在D3中的值指示的行,Cell2:包含公式的单元格上方的3行。

答案 1 :(得分:0)

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

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

将通过Row("CD Sector Average")-3为您提供Row("CD Sector Average")。根据需要调整x-3x,因为我并非100%确定您需要合计的行数。

此外,既然您已经使用宏录制器来获取基本代码(一个很好的起点,BTW,但它会教你可怕的编码习惯),请阅读{ {3}}了解如何清理代码。