VBA – 如何在excel的范围末尾添加绝对总和行

我有一个Excel电子表格,我想添加一个绝对总和行在一个范围的结尾,如图所示。

在这里输入图像说明

我正试图通过编写一个macros来实现这一点。 我已经附加了我已经尝试在范围末尾添加绝对总和行的代码。

MAX = 1502 Src = 0 N = 0 Freq = 0.05 Freqmax = 1 Op = ActiveSheet.Range("K2") For Freq = 0.05 To Freqmax Step 0.01 K = 0.5 * R * Sin(WorksheetFunction.Pi * Freq) C1 = 0.5 * (1 - K) / (1 + K) C2 = (0.5 + C1) * Cos(WorksheetFunction.Pi * Freq) C3 = (0.5 + C1 - C2) * 0.25 ma0 = 2 * C3 ma1 = 2 * 2 * C3 ma2 = 2 * C3 mb1 = 2 * (-C2) mb2 = 2 * C1 For Src = 0 To MAX Step 1 Inp = ActiveSheet.Range("K" & 2 + Src) Op = ma0 * Inp + ma1 * mx1 + ma2 * mx2 - mb1 * my1 - mb2 * my2 mx2 = mx1 mx1 = Inp my2 = my1 my1 = Op ActiveSheet.Range("L" & 2 + Src) = Op ActiveSheet.Range("M" & 2 + Src) = ActiveSheet.Range("L" & 2 + Src) - ActiveSheet.Range("K" & 2 + Src) Next LastRow = ActiveSheet.Range("M" & 2 + Src).End(xlDown).Row Cells(LastRow + 2, "M").Formula = "=SUMPRODUCT(ABS(M2:M" & LastRow & ")" ActiveSheet.Columns("L:M").Insert Shift:=xlToRight Next 

我的代码工作的方式是在循环结束时递增频率,并将计算向右移动,以便插入下一个频率值的值。

所以我想要做的是计算一个范围的绝对总和。

但是我在这段代码中遇到了一个错误“应用程序定义或对象定义的错误”。

 Cells(LastRow + 2, "M").Formula = "=SUMPRODUCT(ABS(M2:M" & LastRow & ")" 

任何人都可以告诉我什么是正确的方法来做到这一点?

当您尝试确定此代码行中的lastRow时 ,M2下面没有任何内容。

 lastRow = .Range("M" & 2 + src).End(xlDown).Row 

这意味着lastRow将是1048576(工作表中的行数)。 当您尝试在下一行代码中添加2 (2个位置)时,

 .Cells(lastRow + 2, "M").Formula = "=SUMPRODUCT(ABS(M2:M" & lastRow & ")" 

…试图a)使用工作表底部下两行的单元格,以及b)尝试在公式中的工作表中引用两行以外的单元格。

你可以通过从底层看来解决这个问题。

 lastRow = .Range("M" & rows.count).End(xlUp).Row 

不过,我质疑这是否是列小计所属。 通过在内部循环之外移动这两行代码并插入新列之前,可以引用一个更好的地方。

  Next src lastRow = .Range("M" & rows.count).End(xlUp).Row .Cells(lastRow + 2, "M").Formula = "=SUMPRODUCT(ABS(M2:M" & lastRow & "))" .Columns("L:M").Insert Shift:=xlToRight Next freq 

附录: SUMPRODUCT函数缺less右括号。