【发布时间】:2016-05-08 23:12:14
【问题描述】:
我有一个 Excel 电子表格,我想在一个范围的末尾添加一个绝对总和行,如图所示。
我正在尝试通过编写宏来实现这一点。我附上了我尝试在范围末尾添加绝对总和行的代码。
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 & ")"
谁能告诉我这样做的正确方法是什么?
【问题讨论】:
-
用列号替换你的“m”?
-
Cells(LastRow + 2, "2").Formula = "=SUMPRODUCT(ABS(M2:2" & LastRow & ")"这边? -
这样...
ActiveSheet.Cells(LastRow + 2, 13).Formula = "=SUMPRODUCT(ABS(M2:2" & LastRow & ")",但请注意这是一个问题...试试看它是否有效。 -
感谢您的回复。但仍然遇到同样的错误。
-
我看到你说 NEXT,但你真的需要说 NEXT SRC 和 NEXT Freq 吗?我也没有看到 MAX 被定义为不应该有所作为。而不是说活动表,您可能想定义哪个表,那么您可能不只是深思熟虑。我也不相信你需要说STEP 1,我相信它默认一步一步,如果你做不同的事情你只需要一步。
标签: vba excel excel-formula