4

处理一个excel宏,我试图从上面的单元格中添加单元格值来计算总值。这就是我的数据的样子示例 Excel 文档

在这里,我想为每一列添加上面的单元格值来计算总和。为此,我编写了一个宏,如下所示。

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

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

4

6 回答 6

9

不确定我是否完全理解您的代码。您似乎正在写入第 4 行,但您还想从第 4 行求和到第 6 行。这将创建一个循环引用。

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

了解使用什么参考的技巧是:

  • 获取一个新的工作表,输入=SUM(B4:B6)单元格 B3 并复制到右侧。
  • 然后单击File > Options > Formulas并选择R1C1 Reference Style
  • 现在检查工作表中的公式。你会看到这个:=SUM(R[1]C:R[3]C)

这就是您在宏中所需要的。

For cl = 2 To 5    
    Worksheets(5).Cells(3, cl).FormulaR1C1 = "=SUM(R[1]C:R[3]C)"    
Next cl
于 2013-07-25T08:14:31.230 回答
1

对于你的情况,你可以使用这个:

For cl = 2 To 5
    ColName = Left(Cells(1, cl).Address(0, 0), (Cells(1, cl).Column < 27) + 2)
    ValueSum = "=SUM(" & ColName & "4:" & ColName & "6)"
    Worksheets(5).Cells(4, cl).Formula = ValueSum
Next
于 2018-12-11T03:49:34.463 回答
1

您可以使用非常简单的公式,如下所示:

Sub sum_month()
Sheets("13").Activate
Range("D2").Formula = "=SUM(A1+A2+A3)"
End Sub

接下来只需按住并拖动单元格以自动填充另一行。

于 2018-08-17T13:44:10.927 回答
0

尝试这样的事情。

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
于 2013-07-25T08:05:14.763 回答
0

公式中 R1C1 和 R[1]C[1] 样式的更多细节。据我所知, R[1]C[1] 创建一个相对引用,而 R1C1 创建一个绝对引用。但请记住,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)" 
于 2016-09-21T13:52:46.723 回答
0

我认为您可以只引用整个公式范围,Excel 将足够聪明来调整列。

没有循环:

Worksheets(5).Cells(4, cl).resize(1,4).Formula = "=SUM(B4:B6)"

于 2018-12-11T05:53:52.037 回答