例如,如果我有数据
A B C
1|0 0
2|0 1
3|1 1
我想将C列设置为A和B的总和,我将使用函数
C1=SUM(A1:B1)
...等 得到
A B C
1|0 0 0
2|0 1 1
3|1 1 2
在VBA中,我可以从0迭代到2并单独设置
'iterating on i
Cells(i, 3).FormulaR1C1 = _
"=SUM(R" & i & "C" & 1 & ":R" & i & "C" & 2 & ")"
但是有没有办法在没有迭代的情况下做到这一点?我刚刚开始使用VBA,但似乎应该有一种简单的方法来选择一系列单元格,并根据正在设置的单元格的行或列设置FormulaR1C1 R或C字段。
答案 0 :(得分:1)
您可以使用R1C1表示法:
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1")
ws.Range("C1:C3").FormulaR1C1 = "=SUM(RC1:RC2)"
您必须使用.FormulaR1C1
才能生效。
SUM(RC1:RC2):没有数字的R表示使用当前行(相对引用); C1表示第一列(绝对参考); C2表示第二列(绝对参考)。这被称为混合引用,因为在同一地址中同时具有绝对引用和相对引用。
答案 1 :(得分:0)
以下方法不使用AutoFill
并且不使用R1C1
表示法。
Sub HereComesThePain()
Range("C1:C3").Formula = "=SUM(A1:B1)"
End Sub
您甚至可以使其更具动态性,以容纳更多行。
Sub HereComesThePainPartTwo()
'Get the last row in Column A. Same as pressing Ctrl-Up from the last row.
LRow = Range("A" & Rows.Count).End(xlUp).Row
'Substitute LRow in the respective part.
Range("C1:C" & LRow).Formula = "=SUM(A1:B1)"
End Sub
如果有帮助,请告诉我们。
编辑:
为了证明,这是一个截图:
其原因与AutoFill
的性质非常相似:Excel立即调整公式以适合给定范围。