趋势线格式化后从方程式中获取公式

时间:2019-01-03 09:46:14

标签: excel vba

早上好

自圣诞节以来,这个问题一直困扰着我。我有一个图,我应用趋势线然后对趋势线进行格式化,以获得6个Sig Figs的详细公式,而不是使用默认模式。但是,当我提取趋势线的方程式时,有时会得到方程式的完整6信号图版本,而有时我会获得默认版本。我看不出为什么这种情况会因个案而异,尽管我确信这是有原因的。我使用的代码如下(我还确定可能会有更有效的方法进行编码-当前只是试图使其工作)

Set t = My_Chart.Chart.SeriesCollection(X).Trendlines(1)
t.DataLabel.NumberFormat = "0.00000E+00"
Application.Wait (Now + TimeValue("0:00:01"))
Eqn_Len = Len(t.DataLabel.Text)
LHS_Len = Round(Eqn_Len / 2)
RHS_Len = Eqn_Len - LHS_Len
LHS = Left(t.DataLabel.Text, LHS_Len)
RHS = Right(t.DataLabel.Text, RHS_Len)
Equation_Formula = LHS & RHS
Cells(95, 1) = Equation_Formula
Equation_Formula_Main = Replace(Equation_Formula, "y=", "")
Equation_Formula_Main = Replace(Equation_Formula_Main, "x3", "x^3")
Equation_Formula_Main = Replace(Equation_Formula_Main, "x2", "x^2")
Cells(95, 1).Value = Equation_Formula_Main
Equation_Formula_Main = Right(Equation_Formula_Main, Len(Equation_Formula_Main) - 2)

我使用的趋势线是一个三阶多项式,大约15 -30点,具体取决于数据。任何人都可以看到任何原因吗?

为了帮助,我添加了一个示例。 我已将所有长度定义为双精度,将包含字符串的变量定义为字符串,将t定义为趋势线

我当前的公式=“ y = -8.80186E-09X ^ 3 + 1.28815E-04X ^ 2-5.17488E-01X + 7.06521E + 02。这使变量Eqn_Len的值为42,即显然是错误的,但是Len(t.DataLabel.Text)的值等于63。通过代码,变量LHS变为“ y = -9E-09X ^ 3 + 0.0001”,变量RHS变成“ x ^ 2--0.5175X + 706.52”。您可以看到,此等式优于趋势线的默认版本,而不是应采用的格式化版本。

感谢您可能提供的任何帮助,以及您可以就此相当小但烦人的问题获得的启发。

0 个答案:

没有答案