我不是很精通编码所以这可能不是正确的术语,但我想做一个非常简单的事情,总和范围。我的意思是我想要:
Sub Test()
Range("E2:E9") = Range("D2:D9") + Range("G2:G9")
End Sub
如果我只使用:
,这样可以正常工作Sub Test()
Range("E2") = Range("D2") + Range("G2")
End Sub
从这一切我想要发生的是让细胞E2-E9中的所有东西都等于其相对添加的D_和G_。因此E4将等于D4 + G4。
这只是对100行以上的大型项目的测试,这就是为什么我不想手动完成这些操作。
也许我需要使用某种数组添加或其他什么?我不确定。
答案 0 :(得分:4)
以下是如何将其作为数组函数执行:
Range("E2:E9").FormulaArray = "=D2:D9+G2:G9"
但是数组函数可能很难处理,因此您可能只想将其作为单单元格公式执行:
Range("E2:E9").Formula = "=D:D+G:G"
Excel可以让这个公式发挥作用。如果你想明确:
Range("E2:E9").FormulaR1C1 = "=RC[-1]+RC[2]"
答案 1 :(得分:1)
使用Range Object Formula
属性,如下所示:
编辑1:避免使用Mark Balhoff指出的循环引用
With Range("E2:E9")
.Offset(0, 2).Value = .Offset(0, 2).Value '~~> avoid circular ref
.Formula = "=D2+G2"
.Value = .Value
.Offset(0, -1).ClearContents
.Offset(0, 2).Formula = "=E2" '~~> if you still want to have it reflected in G
End With
或者您可以直接将D添加到E而不使用辅助列G.
With Range("E2:E9")
.Offset(0, -1).Copy '~~> copy what's in D
.PasteSpecial xlPasteValues, xlPasteSpecialOperationAdd '~~> add in E
.Offset(0, -1).ClearContents '~~> clear whatever's in D
End With
答案 2 :(得分:0)
您可以制作自定义公式。
例如你想要总和 A1:A10 和 B1:B10 并且需要 C1:C10 的结果(请注意你需要相同的这里的行数和垂直行
Sub AddRanges(Rng1 As Range, Rng2 As Range, ResultRng As Range)
Dim i As Long, N As Long
N = Rng1.Rows.Count
For i = 1 To N
ResultRng(i, 1).Value = Rng1(i, 1).Value + Rng2(i, 1).Value
Next i
End Sub
此公式调用上述子例程
Sub TestMyFormula()
Dim RngA As Range, RngB As Range, RngC As Range
Set RngA = ActiveSheet.Range("A1:A10")
Set RngB = ActiveSheet.Range("B1:B10")
Set RngC = ActiveSheet.Range("C1:C10")
Call AddRanges(RngA, RngB, RngC)
End Sub