【发布时间】:2016-02-21 22:00:00
【问题描述】:
我有两行数据,断裂压力和深度。我必须在 vba 中编码以生成多项式(在这种情况下为二次)方程,然后将系数输出到工作表。我正在使用 Linest 和索引。对于这两行数据,我不知道我有多少个数据集,因为我需要先删除一些噪声数据(噪声数据的定义是随机的所以数据集的数量每次都不一样),所以我不能使用像“A17:A80”这样的行函数。但是,看起来 vba 中的工作表函数不适用于数组。
Dim Frac_x, Frac_y As Range
Dim X
Set Frac_x = Range(Cells(17, 1), Cells(e - 1, 1))
Set Frac_y = Range(Cells(17, 7), Cells(e - 1, 7))
X= Application.WorksheetFunction.LinEst(Frac_y,Frac_x,{1,2})
Cells(3, 8).Value = Application.WorksheetFunction.Index(X, 1, 1)
Cells(4, 8).Value = Application.WorksheetFunction.Index(X, 1, 2)
Cells(5, 8).Value = Application.WorksheetFunction.Index(X, 1, 3)
在这段代码中,e在前面的代码中定义,(e-1)表示数据集的总数。但是,我不断收到{ is a invalid character 的线路:X= Application.WorksheetFunction.LinEst(Frac_y,Frac_x,{1,2})
然后我做了一些研究并将代码修改为:
Dim Frac_x, Frac_y As Range
Dim X
Set Frac_x = Range(Cells(17, 1), Cells(e - 1, 1))
Set Frac_y = Range(Cells(17, 7), Cells(e - 1, 7))
X = Application.Evaluate("=linest(" & Frac_y & "," & Frac_x & "^ {1,2}))")
Cells(3, 8).Value = Application.WorksheetFunction.Index(X, 1, 1)
Cells(4, 8).Value = Application.WorksheetFunction.Index(X, 1, 2)
Cells(5, 8).Value = Application.WorksheetFunction.Index(X, 1, 3)
然后我不断收到Type Dismatch 错误:
X = Application.Evaluate("=linest(" & Frac_y & "," & Frac_x & "^ {1,2}))")
我确信 frac_y 和 frac_x 这两个范围的类型匹配。有人可以帮忙吗?
【问题讨论】:
-
{1,2}到底是什么意思?试试这个:X = Application.LinEst(Frac_y, Frac_x, array({1,2})) -
尝试将 Dim Frac_x, Frac_y As Range 更改为 Dim Frac_x as range, Frac_y As Range as first 将使 Frac_x 变暗为变体而不是范围。
标签: vba excel worksheet-function polynomials