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变量并得到错误。 任何提示都会有所帮助,或者如果我发生错误,请告诉我。
答案 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-3
和x
,因为我并非100%确定您需要合计的行数。
此外,既然您已经使用宏录制器来获取基本代码(一个很好的起点,BTW,但它会教你可怕的编码习惯),请阅读{ {3}}了解如何清理代码。