使用存储的整数作为单元格引用
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")-3
到 Row("CD Sector Average")
。根据需要调整 x-3
和 x
,因为我不能 100% 确定您需要汇总哪些行。
此外,既然您已经使用宏录制器获取基本代码(顺便说一句,这是一个很好的起点,但它会教会您 糟糕 编码习惯),阅读 How to avoid using Select in Excel VBA macros 以了解如何清理代码。
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")-3
到 Row("CD Sector Average")
。根据需要调整 x-3
和 x
,因为我不能 100% 确定您需要汇总哪些行。
此外,既然您已经使用宏录制器获取基本代码(顺便说一句,这是一个很好的起点,但它会教会您 糟糕 编码习惯),阅读 How to avoid using Select in Excel VBA macros 以了解如何清理代码。