Excelで指数移動平均(EMA)を計算する3つの方法を徹底解説
指数移動平均(Exponential Moving Average:EMA)は、将来のデータ予測や株価の動きを滑らかにするために広く活用されている手法です。「指数移動平均とは何か」「Excelでどう計算すればよいのか」をお探しの方に向けて、この記事ではExcelでEMAを計算できる3つの実用的な方法をわかりやすく解説します。
指数移動平均(EMA)とは
指数移動平均(EMA)は「指数加重移動平均」とも呼ばれ、移動平均の一種です。単純移動平均(SMA)と比べて、直近のデータにより大きな重みを与える点が特徴です。そのため、単純移動平均よりも平滑化の効果が高くなります。また、期間が長くなるほど過去データの重要度は徐々に低下していきます。
EMAの計算式は以下の通りです。
EMAt = α × Yt-1 + (1-α) × EMAt-1
- EMAt = 現在の期間の指数移動平均
- α(アルファ) = 平滑化係数。0~1の間の値を取ります。αの値が大きいほど過去のデータへの重みが大きくなります。理想的な範囲は0.1~0.3程度です。αは次の式でも求められます:α = 2/(n+1)(nは期間数)
ここでは、2020年の12か月分の売上データを持つ次のようなデータセットを例にします。このデータをもとに、2021年1月の売上を指数移動平均で予測していきます。

Excelで指数移動平均を計算する3つの方法
方法1:分析ツール(Data Analysis ToolPak)を使う
Excelに標準搭載されている「分析ツール」を使えば、指数移動平均による将来予測が簡単に行えます。まずはアドインを有効化しましょう。
➤ 「ファイル」タブを開き、「オプション」を選択します。

Excelのオプション画面が表示されます。続いて以下の操作を行います。
➤ 「アドイン」タブに移動し、下部の「設定」ボタンをクリックします。

アドインダイアログボックスが開きます。
➤ 「Analysis ToolPak(分析ツール)」にチェックを入れ、「OK」をクリックします。

これで準備完了です。次に実際の計算に進みます。
➤ 「データ」タブを開き、「データ分析」をクリックします。

データ分析ウィンドウが表示されます。
➤ 一覧から「指数平滑化」を選択し、「OK」をクリックします。

指数平滑化ウィンドウでは、以下のように設定します。
➤ 「入力範囲」に売上データのセル範囲を指定します(予測対象となる空セルも含めます)。次に、「減衰係数」欄にαの値を入力します。
本例ではα=0.3としています。なお、減衰係数には「1-α」の値を入力する点に注意してください。
続いて、
➤ 「出力範囲」(EMAの計算結果を表示したい場所)を指定します。
実際のデータとEMAをグラフで比較したい場合は、
➤ 「グラフ作成」にチェックを入れます。
最後に、
➤ 「OK」をクリックします。

これで、選択した出力範囲に各期間のEMAが表示され、2021年1月の売上予測値も得られます。

結果をよく見ると、2月のEMAが1月の売上と同じになっていることがわかります。これは、Excelの分析ツールが「最初のEMA=前期間の実績値」と仮定して計算しているためです。この手法は予測におけるナイーブ法(Naive Method)として知られています。
同時に、実際のデータと算出されたEMA予測を比較したグラフも自動的に作成されます。

方法2:数式を手入力して手動で計算する
分析ツールを使わずとも、EMAの計算式を直接セルに入力することで指数移動平均を求められます。全期間のEMAを計算するには、まず最初の期間のEMAが必要です。初期値の求め方には、ナイーブ法、単純移動平均、3期移動平均などさまざまな方法があります。ここでは3期移動平均(3MA)を使う方法を紹介します。
まず3期移動平均を求めます。
➤ 4月の行(セルE8)に次の数式を入力します。
=(D5+D6+D7)/3
この数式は、直前3か月分の売上の平均を返します。続いて、
➤ セルE8を下方向へドラッグ(フィルハンドル)し、全期間の3MAを求めます。

次に、EMAの計算に必要なαを求めます。今回は次の数式を使用します。
=2/(12+1)
データセットに12期間あるため、n=12としています。

続いて、
➤ 4番目の期間のEMAを求めるため、次の数式を入力します。
=(1-$C$3)*D7+$C$3*E8
この数式では、最初の期間のEMAとして当該期間の3MAを代用しています。

これで最初の期間のEMAが求まりました。あとは同じ要領で全期間のEMAを計算できます。
➤ セルF9に次の数式を入力します。
=(1-$C$3)*D8+$C$3*F8
ここで、$C$3はαの値、D8は前期間の売上、F8は前期間のEMAを表しています。

最後に、
➤ セルF9をデータセットの末尾までドラッグします。
これで、予測期間(2021年1月)を含むすべての期間のEMAが計算できます。

関連記事: Excelグラフで移動平均線を作成する方法(4つの方法)
方法3:VBAでカスタム関数を作成する
指数移動平均は、株価の動きを滑らかにする目的でもよく使われます。この方法では、Microsoft VBA(Visual Basic for Applications)でカスタム関数を作成し、複数期間にわたる株価の変動を平滑化する方法を解説します。
株価の平滑化では、EMAの計算式において「前期間のデータ」の代わりに「現在の期間の価格」を使用します。したがって、計算式は次のようになります。
EMAt = α × P + (1-α) × EMAt-1
ここで、Pは現在の期間の株価です。
この式は次のようにも書けます。
EMAt = α × P + (1-α) × EMAt-1
今回は、1年間の各月の株価平均データがあるデータセットを想定します。VBAでカスタム関数を作成し、各月の株価の指数移動平均を計算していきましょう。
➤ まず、シート名を右クリックし、「コードの表示」を選択します。

VBAエディタが開きます。
➤ 次のコードを入力します。
Private Sub Workbook_Open()
AddUDF
End Sub
このコードは、ワークブックを開いたときにカスタム関数を登録するマクロを実行するものです。

続いて、
➤ VBAウィンドウ左側のパネルでシート名を右クリックし、「挿入」>「標準モジュール」を選択します。

モジュールウィンドウが開きます。そこに、
➤ 次のコードを挿入します。
Sub AddUDF()
Application.MacroOptions macro:="EMA", _
Description:="Returns the Exponential Moving Average." & Chr(10) & Chr(10) & _
"Select last period's EMA or last period's price if current period is the first." & Chr(10) & Chr(10) & _
"Followed by current price and n." & Chr(10) & Chr(10) & Chr(10) & _
"The decay factor of the exponential moving average is calculated as alpha=2/(n+1)", _
Category:="Technical Indicators"
End Sub
Public Function EMA(EMAYesterday, price, n)
alpha = 2 / (n + 1)
EMA = alpha * price + (1 - alpha) * EMAYesterday
End Function
このコードにより、EMA(EMAYesterday, price, n)という名前のカスタム関数が作成されます。

➤ VBAウィンドウを閉じます。
このカスタム関数でEMAを計算するには、最初の期間のEMAが必要です。ここではナイーブ法を採用し、「最初の期間のEMA=その期間の株価」とします。
続いて、
➤ セルD6に次の数式を入力します。
=EMA(D5,C6,12)
ここで、D5は前期間のEMA、C6は現在の期間の株価、12は期間数です。

➤ Enterキーを押します。
これで、その期間のEMAが表示されます。

最後に、
➤ セルD6をデータセットの末尾までドラッグします。
これで、すべての期間のEMAが一括で計算できます。

関連記事: Excelで平均値を計算する方法(すべての条件を網羅)
まとめ
この記事では、Excelで指数移動平均(EMA)を計算する3つの方法——分析ツールを使う方法、数式を手入力する方法、VBAでカスタム関数を作成する方法——を解説しました。用途やスキルレベルに応じて最適な方法を選んでください。ご不明な点があれば、お気軽にコメントでお知らせください。
関連記事
- Excelで平均・最小値・最大値を計算する方法(4つの簡単な方法)
- ExcelでVLOOKUPの結果の平均を計算する方法(6つの方法)
- 累積平均:ExcelのAVERAGE関数を使った計算方法
-
Excelでトレンド調整指数平滑法を計算する方法を徹底解説
指数平滑法は、最も関連性の高い期間に大きな重みを置く独自の加重計算式を用いて、データからトレンド方程式を算出する手法です。Microsoft Excelを使えば、指数平滑法の計算を正確かつ効率的に行えます。Excelには優れたツールやアドインが多数用意されており、この記事ではExcelでトレンド調整指数平滑法を計算する手順を詳しく解説します。記事内で使用するワークブックをダウンロードして、実際に練習しながら進めることもできます。Excelにおける指数平滑法とは?Excelには「指数平滑法(Exponential Smoothing)」というスムージング機能が標準で搭載されています。主にトレンド
-
Excelで指数平滑法を実行する方法|初心者向けの簡単ステップガイド
Excelで指数平滑法(Exponential Smoothing)を実行する方法をお探しではありませんか?本記事では、Excelの標準搭載されている分析ツールを使って、指数平滑法による売上予測を簡単に行う手順を、図解付きでわかりやすく解説します。初心者の方でもすぐに実践できる内容となっていますので、ぜひ最後までご覧ください。 指数平滑法とは? 指数平滑法は時系列予測手法の一つで、新しいデータに高い重みを与え、古いデータには低い重みを与えることで将来の値を予測する方法です。この優先度は重み付け係数によって決定され、過去の観測値は指数関数的に減少する形で重み付けされます。指数平滑法には主に3つ