我正在尝试将此代码用于求和单元格:
Worksheets("Sheet2").Range("C3").Offset(i, j).Formula = "=Sum("
&Worksheets("Sheet1").Range("A3").Offset(2*i,j).Address & ":" &
Worksheets("Sheet1").Range("A7").Offset(2*i,j).Address & ")"
它一直给我正确的细胞,但来自错误的表格。因此,对于第一次迭代,我得到Sheet2的单元格C3中的总和(A3:A7),但A3:A7保持参考Sheet2而不是Sheet1。
谢谢!
答案 0 :(得分:2)
您还需要在公式中指定工作表的名称。如果您这样写,您的代码将起作用:
Worksheets("Sheet2").Range("C3").Offset(i, j).Formula = "=Sum(Sheet1!" & _
Worksheets("Sheet1").Range("A3").Offset(2 * i, j).Address & ":" & _
Worksheets("Sheet1").Range("A7").Offset(2 * i, j).Address & ")"
答案 1 :(得分:1)
尝试使用此代码 - 它使用External:=True
的{{1}}参数来检索完整地址。虽然这也包括工作簿名称,Excel将自动删除它,因此您最终得到Sheet1!A3。另请注意,我使用范围.Address
作为源,因为A3:A7
可以处理多单元格范围,您无需手动处理它:
.Address
请注意,Sheets("Sheet2").Range("C3").Offset(i, j).Formula = "=SUM(" & _
Sheets("Sheet1").Range("A3:A7").Offset(2 * i, j).Address(External:=True) & ")"
等硬编码引用可能会导致长期错误,因为用户(甚至某个阶段的开发人员)可能会修改工作表结构。最佳做法是使用命名范围,即为您引用的每个单元格/范围创建命名范围,然后在A3
或类似的VBA中访问它!