1

首先,这是有问题的 Excel 图表,在运行代码之前:

在此处输入图像描述

并在运行代码后:

在此处输入图像描述

这是有问题的代码:

Option Explicit

Dim Counter As Long
Dim DeSimpleFinal As Double

Sub SimpleDeCalculationNEW()

Counter = 13
Range("C1") = "CFL Calculated"
Range("D1") = "Residual Squared"
Range("E1") = "De value"
Range("F1") = 0.2

'Inserting Equations
Range("C2") = "=((2 * $H$2)/ $H$1) * SQR(($F$1 * A2) / PI())"
Range("C2").Select
Selection.AutoFill Destination:=Range("C2:C" & Counter + 1), Type:=xlFillDefault

Range("D2") = "=((ABS(B2-C2))^2)"
Range("D2").Select
Selection.AutoFill Destination:=Range("D2:D" & Counter + 1), Type:=xlFillDefault

'Summing up the residuals squared
Range("D" & Counter + 2) = "=Sum(D2, D" & Counter + 1 & ")"

Columns("A:Z").EntireColumn.EntireColumn.AutoFit

'Goal Seek
Range("D" & Counter + 2).GoalSeek Goal:=0, ChangingCell:=Range("F1")

DeSimpleFinal = Range("F1")
'Range("XFD1048523") = DeSimpleFinal

MsgBox ("The Final Value for DeSimple is: " & DeSimpleFinal)

End Sub

我不断收到此错误,运行时错误:1004 引用无效,以及工作表上的所有这些名称错误。有人知道我该如何解决这个问题吗?我正在尝试使残差的平方和尽可能接近零,以便尽可能适合我的数据。我通过使用 Goal Seek 来做到这一点,它改变了 F1 中给出的 De 的值,以最小化 D15 中给出的残差平方和。

我之前已经让这种方法正常工作,但我不确定它为什么在这里失败。任何建议都会很棒!

4

1 回答 1

3

我不确定这是否能解决所有问题,但将您的功能行更改为以下内容:

Range("C2").Formula = "=((2 * $H$2)/ $H$1) * SQRT(($F$1 * A2) / PI())"

SQRT而不是SQR

附加提示,有时最好正确命名对象属性,在您的情况下,我建议.Formula在将函数插入范围时使用,例如:

Range("C2").Formula = "=((2 * $H$2)/ $H$1) * SQRT(($F$1 * A2) / PI())"
Range("D2").Formula = "=((ABS(B2-C2))^2)"
Range("D" & Counter + 2).Formula = "=Sum(D2, D" & Counter + 1 & ")"

我知道它通常可以正常工作,但我的建议是我坚持的一个好习惯:)

于 2013-06-03T19:11:08.580 回答