ベストアンサー
Excelトレンドラインは、データに最小二乗法で適合します。トレンドラインの方程式と決定係数(1に近いほど良い)を表示するようにExcelに要求できます(また、そうすべきです)。
近似曲線は、y = aの形式の方程式を使用します。 * x ^ b、ここでaとbは、近似曲線ウィザードによって実行される回帰分析によって検出された定数です。
Excelは近似曲線の方程式に十分な桁数を表示しないことに注意してください。最初に表示された方程式を使用してポイントを計算しようとすると、Excelに手がかりがないと誤って結論付ける可能性があります。実際、靴はもう一方の足にあります。トレンドラインの数式を右クリックし、ポップアップから[トレンドラインラベルの書式設定…]を選択して、表示される作業ウィンドウの小数点以下の桁数を増やします。
回答
他の人が述べているように、この場合はVBAは必要ないと思います。
単純な線形近似曲線の場合、 SLOPEおよびINTERCEPT式を使用した値Xに基づく任意の値Yの値。式は次の形式になります。
y = mx + b
ここで、「y」は従属変数、「m」は直線の傾き、「x」は独立変数であり、「b」はY切片です。セルA2:A10のX値、セルB2:B10のY値、およびセルC1の目的の「X」変数を想定すると、次のように入力します。
= SLOPE(B2:B10、A2:A10 )* C1 + INTERCEPT(B2:B10、A2:A10)
ただし、質問は、移動平均トレンドラインに関心があることを示しています。この場合、前の「n」個の観測値の平均をとることで、任意のデータポイントを計算できます。ここで、「n」は移動平均の期間数です。
たとえば、 2-期間移動平均(「n」= 2)、最後の2つの値を単純に平均します。簡単な例を以下にコピーします。
VBAを使用するように設定されている場合、このコードはマイナーでトリックを実行する必要があります必要に応じて変更します。現状では、X / Yペアの範囲を選択し、マクロを実行するだけで機能するはずです。結果は非常に基本的なXY散布図になり、グラフのタイトルはシーケンス内の次のXYペアを示します。
これがお役に立てば幸いです。
ベン
Sub AddXYScatter()
Dim r As Range
Dim c As Chart
Dim x As Long
Dim s As String
Set r = Selection
If r.Columns.Count 2 Then
MsgBox "Please select your X/Y pairs and try again"
Exit Sub
End If
x = Application.InputBox("Number of Periods?", "Periods?", 2, , , , , 1)
If r.Rows.Count <= x Then
MsgBox "Not enough observations, please select more rows or reduce periods."
Exit Sub
End If
ActiveSheet.Shapes.AddChart(xlXYScatter).Select
Set c = ActiveChart
With c
.SetSourceData Source:=r
.SeriesCollection(1).Trendlines.Add
With .SeriesCollection(1).Trendlines(1)
.Type = xlMovingAvg
.Period = x
End With
.SetElement (msoElementChartTitleAboveChart)
s = "Next X | Y Pair: "
s = s & Format(WorksheetFunction.Average(r.Offset(r.Rows.Count - x, 0).Resize(x, 1)), "0.00")
s = s & " | " & Format(WorksheetFunction.Average(r.Offset(r.Rows.Count - x, 1).Resize(x, 1)), "0.00")
.ChartTitle.Text = s
End With
Set r = Nothing
Set c = Nothing
End Sub