Sacar coeficientes del grafico de JuanC
Publicado por Antonio (9 intervenciones) el 16/03/2012 12:32:38
Este programa de JuanC, extrae los coeficientes de una regresión polinomica, del grafico de excel.
Hay un par de simples cambios del original. Intento que funcione constantemente, mientras voy cambiando los datos. "Y"se queda en blanco. Paso a paso funciona, paso a paso muy rapidamente falla. ¿velocidad?. Alguna idea. Alguien sable el e-mail de JuanC.
Gracias.
Sub Test3()
'//Objetivo: Sacar los coef. de un polinomio de 3er grado a partir de un gráfico
Dim Y$, sRangoDatos$, sHoja$, sTmp$
Dim c1$, c2$, c3$, c4$
'//Origen de los datos a graficar
sRangoDatos = "A2:B76"
'//Nombre de la hoja destino del gráfico
sHoja = "DATOS"
Application.ScreenUpdating = False
'//Crear gráfico (polinomio de 3er grado)
Charts.Add
ActiveChart.Type = xlXYScatter
ActiveChart.SetSourceData Source:=Sheets(sHoja).Range(sRangoDatos), PlotBy:=xlColumns
ActiveChart.Location Where:=xlLocationAsObject, Name:=sHoja
ActiveChart.SeriesCollection(1).Trendlines.Add Type:=xlPolynomial, Order:=3, Forward:=0, Backward:=0, DisplayEquation:=True, DisplayRSquared:=False
'//Tomar fórmula del gráfico ( y = c1x3 + c2x2 + c3x + c4 )
Y = ActiveChart.SeriesCollection(1).Trendlines(1).DataLabel.Caption
'//Eliminar gráfico (opcional)
ActiveSheet.ChartObjects("1 Gráfico").Activate
ActiveChart.Parent.Delete
Application.ScreenUpdating = True
'//Extraer coeficientes (c1, c2, c3 y c4)
Y = LCase(Y)
Y = Replace(Y, " x3", "1x3")
Y = Replace(Y, " x2", "1x2")
Y = Replace(Y, " x", "1x")
sTmp = Split(Y, "x3")(0)
c1 = Replace(Mid(sTmp, InStr(1, sTmp, "=") + 1), " ", "")
c1 = Replace(c1, "+", "")
sTmp = Mid(Y, InStr(1, Y, "x3") + 2)
c2 = Replace(Split(sTmp, "x")(0), " ", "")
c2 = Replace(c2, "+", "")
sTmp = Mid(Y, InStr(1, Y, "x2") + 2)
c3 = Replace(Split(sTmp, "x")(0), " ", "")
c3 = Replace(c3, "+", "")
sTmp = Mid(Y, InStrRev(Y, " ") - 2)
c4 = Replace(sTmp, " ", "")
c4 = Replace(c4, "+", "")
'//Presentamos los coeficientes en Hoja -> "Coeficientes"
Range("I2") = c1
Range("I3") = c2
Range("I4") = c3
Range("I5") = c4
End Sub
Hay un par de simples cambios del original. Intento que funcione constantemente, mientras voy cambiando los datos. "Y"se queda en blanco. Paso a paso funciona, paso a paso muy rapidamente falla. ¿velocidad?. Alguna idea. Alguien sable el e-mail de JuanC.
Gracias.
Sub Test3()
'//Objetivo: Sacar los coef. de un polinomio de 3er grado a partir de un gráfico
Dim Y$, sRangoDatos$, sHoja$, sTmp$
Dim c1$, c2$, c3$, c4$
'//Origen de los datos a graficar
sRangoDatos = "A2:B76"
'//Nombre de la hoja destino del gráfico
sHoja = "DATOS"
Application.ScreenUpdating = False
'//Crear gráfico (polinomio de 3er grado)
Charts.Add
ActiveChart.Type = xlXYScatter
ActiveChart.SetSourceData Source:=Sheets(sHoja).Range(sRangoDatos), PlotBy:=xlColumns
ActiveChart.Location Where:=xlLocationAsObject, Name:=sHoja
ActiveChart.SeriesCollection(1).Trendlines.Add Type:=xlPolynomial, Order:=3, Forward:=0, Backward:=0, DisplayEquation:=True, DisplayRSquared:=False
'//Tomar fórmula del gráfico ( y = c1x3 + c2x2 + c3x + c4 )
Y = ActiveChart.SeriesCollection(1).Trendlines(1).DataLabel.Caption
'//Eliminar gráfico (opcional)
ActiveSheet.ChartObjects("1 Gráfico").Activate
ActiveChart.Parent.Delete
Application.ScreenUpdating = True
'//Extraer coeficientes (c1, c2, c3 y c4)
Y = LCase(Y)
Y = Replace(Y, " x3", "1x3")
Y = Replace(Y, " x2", "1x2")
Y = Replace(Y, " x", "1x")
sTmp = Split(Y, "x3")(0)
c1 = Replace(Mid(sTmp, InStr(1, sTmp, "=") + 1), " ", "")
c1 = Replace(c1, "+", "")
sTmp = Mid(Y, InStr(1, Y, "x3") + 2)
c2 = Replace(Split(sTmp, "x")(0), " ", "")
c2 = Replace(c2, "+", "")
sTmp = Mid(Y, InStr(1, Y, "x2") + 2)
c3 = Replace(Split(sTmp, "x")(0), " ", "")
c3 = Replace(c3, "+", "")
sTmp = Mid(Y, InStrRev(Y, " ") - 2)
c4 = Replace(sTmp, " ", "")
c4 = Replace(c4, "+", "")
'//Presentamos los coeficientes en Hoja -> "Coeficientes"
Range("I2") = c1
Range("I3") = c2
Range("I4") = c3
Range("I5") = c4
End Sub
Valora esta pregunta


0