在Excel中使用vba设置总和公式

工作在一个Excelmacros,我试图从上面的单元格中添加单元格值来计算总值。 这是我的数据看起来像 示例Excel文档

这里我想为每列添加上面的单元格值来计算总和。 为了完成这个我写了一个macros如下。

For cl = 2 To 5 Worksheets(5).Cells(4, cl).Formula = "=SUM(B4:B6)" Next cl 

这应该将公式设置为连续的5个单元格中的每个单元格。 但它在一行中的所有单元格上设置相同的公式,它应该根据列进行更改。 如何设置相应列的每个单元格的总和公式?

不知道我很理解你的代码。 你似乎正在写入第4行,但你也想从第4行到第6行。这将创build一个循环引用。

我们假设公式写入第3行。 您将需要使用R1C1参考样式来使单元格相对于当前单元格进行求和。

学习使用什么参考的技巧是:

  • 获取一个新的工作表,input=SUM(B4:B6)到单元格B3并复制到右侧。
  • 然后点击文件>选项>公式,然后selectR1C1参考样式
  • 现在检查表单中的公式。 你会看到: =SUM(R[1]C:R[3]C)

这是你在macros中需要的。

 For cl = 2 To 5 Worksheets(5).Cells(3, cl).FormulaR1C1 = "=SUM(R[1]C:R[3]C)" Next cl 

尝试这样的事情。

 For cl = 2 To 5 ColName = Left(Cells(1, cl).Address(False, False), 1 - (cl > 26)) Worksheets(5).Cells(4, cl).Formula = "=SUM(" & ColName & "4:" & ColName & "6)" Next cl 

R1C1和R [1] C [1]式在公式中的更多细节。 据我所知R [1] C [1]创build一个相对的参考和R1C1创build一个绝对的参考。 但请记住,R [x]和C [y]的数字是包含公式的单元格的偏移量。

这意味着如果你想在C5中显示A1:B4的和,代码必须是这样的:

 Worksheets(5).Cells(5, 3).FormulaR1C1 = "=SUM(R[-4]C[-2]:R[-1]C[-1])" 

如果你想一样,但绝对参考结束是这样的。

  Worksheets(5).Cells(5, 3).FormulaR1C1 = "=SUM(R1C1:R4C2)"