「毎年夏に売上が跳ね上がるデータがあるのに、予測すると直線しか出てこない…」そんな経験はありませんか。FORECAST.LINEAR関数は便利ですが、季節変動のあるデータには向いていません。毎月の波を無視して、右肩上がりの直線で予測してしまうんですよね。
ExcelのFORECAST.ETS関数を使えば、季節の波とトレンドの両方を考慮した予測ができます。この記事では基本構文から6つの引数の意味、季節性パラメータの設定方法、FORECAST.LINEARとの使い分けまで丁寧に解説しますよ。
ExcelのFORECAST.ETS関数とは?
FORECAST.ETS関数は「フォーキャスト・イーティーエス」と読みます。ETSはExponential Triple Smoothingの略です。日本語では「トリプル指数平滑法」と呼ばれ、Holt-Winters法(ホルト・ウィンターズ法)とも呼ばれる手法です。
この関数は、時系列データからトレンド(上昇・下降の傾向)と季節性(周期的な変動パターン)の2つの成分を自動で検出します。そのうえで将来の値を予測してくれますよ。
たとえば「毎年12月に売上が伸び、2月に落ち込む」というパターンがある場合、FORECAST.ETS関数はその季節の波を織り込んだ予測値を返します。直線で予測するFORECAST.LINEAR関数との最大の違いはここです。
対応バージョンはExcel 2016以降、およびMicrosoft 365です。Excel 2013以前では使えないので注意してくださいね。
FORECAST.ETS関数の書き方(構文と引数)
基本構文
=FORECAST.ETS(target_date, values, timeline, [seasonality], [data_completion], [aggregation])
引数は全部で6つあります。最初の3つが必須、残り3つは省略可能です。
引数の一覧
| 引数 | 必須/省略可 | 既定値 | 説明 |
|---|---|---|---|
| target_date | 必須 | ― | 予測したい日付または時点 |
| values | 必須 | ― | 既知のy値(売上・来客数など) |
| timeline | 必須 | ― | 既知の日付・時点(valuesに対応) |
| seasonality | 省略可 | 0(自動検出) | 季節周期の長さ |
| data_completion | 省略可 | 1(補完する) | 欠損値の扱い |
| aggregation | 省略可 | 1(AVERAGE) | 同一時点の集約方法 |
引数1:target_date(必須)
予測したい時点を指定します。日付でも数値でもOKです。月次データなら「2026/7/1」のように翌月の日付を入れます。
引数2:values(必須)
予測の対象となるデータ列です。売上金額、来客数など、予測したい数値を指定してください。
引数3:timeline(必須)
valuesに対応する時間軸のデータ列です。日付や月番号を指定します。valuesとtimelineの行数は一致させてください。一致しないと #N/A エラーになります。
引数4:seasonality(省略可)
季節周期の長さを数値で指定します。設定値の意味は次のとおりです。
| 値 | 動作 |
|---|---|
| 0(既定) | Excelが自動で季節周期を検出する |
| 1 | 季節性なし(トレンドのみで予測) |
| 2以上 | 指定した値を季節周期として使用(月次データで12を指定すると1年周期) |
迷ったら既定値の0(自動検出)で問題ありません。ただし、データの周期があらかじめわかっている場合は明示的に指定したほうが安定した結果を得られますよ。
引数5:data_completion(省略可)
タイムラインに欠損(歯抜け)がある場合の処理方法です。
- 1(既定): 欠損値を近隣データの補間(前後のデータから推測した値で埋める処理)で補完する
- 0: 欠損値をゼロとして扱う
通常は既定値の1で大丈夫です。意図的にゼロが入るデータでない限り、補完させるほうが予測精度が高くなります。
引数6:aggregation(省略可)
同一タイムラインの時点に複数のデータがある場合の集約方法です。
| 値 | 集約方法 |
|---|---|
| 1(既定) | AVERAGE(平均) |
| 2 | COUNT |
| 3 | COUNTA |
| 4 | MAX |
| 5 | MEDIAN |
| 6 | MIN |
| 7 | SUM |
たとえば「2026年1月」に売上データが2行ある場合、既定では平均値に集約されます。合計で扱いたい場合は7(SUM)を指定してください。
基本的な使い方(季節性のあるデータを予測する)
月次売上データに季節の波がある場合の予測例を見てみましょう。
次の2年間(24ヶ月分)のサンプルデータを用意してください。
| セル | A列(月) | B列(売上・万円) |
|---|---|---|
| 2行目 | 2024/1/1 | 100 |
| 3行目 | 2024/2/1 | 80 |
| 4行目 | 2024/3/1 | 120 |
| 5行目 | 2024/4/1 | 140 |
| 6行目 | 2024/5/1 | 160 |
| 7行目 | 2024/6/1 | 200 |
| 8行目 | 2024/7/1 | 220 |
| 9行目 | 2024/8/1 | 180 |
| 10行目 | 2024/9/1 | 150 |
| 11行目 | 2024/10/1 | 130 |
| 12行目 | 2024/11/1 | 110 |
| 13行目 | 2024/12/1 | 190 |
| 14行目 | 2025/1/1 | 110 |
| 15行目 | 2025/2/1 | 90 |
| 16行目 | 2025/3/1 | 130 |
| 17行目 | 2025/4/1 | 150 |
| 18行目 | 2025/5/1 | 170 |
| 19行目 | 2025/6/1 | 210 |
| 20行目 | 2025/7/1 | 230 |
| 21行目 | 2025/8/1 | 190 |
| 22行目 | 2025/9/1 | 160 |
| 23行目 | 2025/10/1 | 140 |
| 24行目 | 2025/11/1 | 120 |
| 25行目 | 2025/12/1 | 200 |
A27セルに「2026/1/1」と入力し、B27セルに次の数式を入力してください。
=FORECAST.ETS(A27, B2:B25, A2:A25)
Excelが自動で季節周期(12ヶ月)を検出し、季節の波を加味した2026年1月の予測値を返します。冬に売上が落ち込むパターンを反映した値になるはずです。
同じデータでFORECAST.LINEAR関数を使うと、季節の波を無視した直線的な予測値になります。季節変動があるデータでは、FORECAST.ETS関数のほうが実態に即した予測ができますよ。
=FORECAST.LINEAR(A27, B2:B25, A2:A25)
この数式は季節の落ち込みを考慮せず、トレンドの延長線上の値を返します。比較してみると、FORECAST.ETS関数の季節補正の効果がよくわかります。
季節周期を手動で指定する場合
月次データで1年周期が明らかな場合は、seasonality引数に12を指定できます。
=FORECAST.ETS(A27, B2:B25, A2:A25, 12)
自動検出(0)でもほとんどの場合は正しく検出されます。ただし、データが少ない場合や変則的な周期がある場合は、手動指定のほうが安定しますよ。
実践的な使い方:FORECAST.ETS.CONFINTで信頼区間を添える
予測値だけを出しても「その数字はどれくらい当てになるのか」が気になりますよね。FORECAST.ETS.CONFINT関数を使えば、予測値の信頼区間(予測がこの範囲に収まる見込み)を計算できます。
C27セルに次の数式を入力してください。
=FORECAST.ETS.CONFINT(A27, B2:B25, A2:A25)
この関数は、95%信頼区間の「幅」を返します。予測値が120なら、120 +/- 信頼区間幅の範囲に実測値が収まる可能性が95%ということです。
上限と下限を別セルに出したい場合は、次のように計算しましょう。
=FORECAST.ETS(A27, B2:B25, A2:A25) + FORECAST.ETS.CONFINT(A27, B2:B25, A2:A25) → 上限
=FORECAST.ETS(A27, B2:B25, A2:A25) - FORECAST.ETS.CONFINT(A27, B2:B25, A2:A25) → 下限
上司への報告では「来月の売上は120万円前後、95%の確率で105万円~135万円の範囲に収まる見込みです」と伝えられます。予測値だけよりもずっと説得力がありますよ。
よくあるエラーと対処法
#N/Aエラー:データ数の不一致
valuesとtimelineの行数が一致していないと #N/A エラーが出ます。
対処法: 両方のデータ範囲が同じ行数になっているか確認してください。途中に空白セルが紛れていないかもチェックしましょう。
#N/Aエラー:seasonalityに無効な値を指定
seasonality引数に負の数を指定すると #N/A エラーになります。
対処法: seasonalityには0以上の整数を指定してください。0(自動検出)か、1以上の正の整数のみ有効です。
#NUM!エラー:データが少なすぎる
seasonalityの値がデータ点数の半分以上になると #NUM! エラーが発生します。たとえばデータが20個なのにseasonality=12を指定すると、季節パターンの検出に十分なデータがありません。
対処法: 季節周期の少なくとも2倍のデータ点数を用意してください。月次12ヶ月周期なら最低24ヶ月分(2年分)のデータが必要です。
#VALUE!エラー:引数に無効な値
data_completionやaggregationに範囲外の値を指定すると #VALUE! エラーになります。
対処法: data_completionは0か1、aggregationは1~7の範囲で指定してください。
エラーの一覧はExcelのエラー値一覧も参考にしてくださいね。
FORECAST.LINEARとの違い・使い分け
予測関数を選ぶときに迷ったら、次の表で整理してみてください。
| 項目 | FORECAST.ETS | FORECAST.LINEAR |
|---|---|---|
| 予測手法 | 指数平滑法(Holt-Winters法) | 線形回帰(最小二乗法) |
| 季節性の考慮 | あり(自動検出または手動指定) | なし |
| 必要なデータ量 | 季節周期の2倍以上(月次なら24ヶ月~) | 2点以上 |
| 引数の数 | 6個(うち3個は省略可) | 3個(すべて必須) |
| 欠損値の処理 | 自動補完機能あり | なし(手動で埋める必要あり) |
| 適したデータ | 季節変動や周期的なパターンがあるデータ | 直線的な上昇・下降トレンドのデータ |
使い分けのポイントは次の2つです。
- 季節変動があるか: 「毎年夏に上がる」「年末に伸びる」→ FORECAST.ETS
- 直線的なトレンドか: 「毎月一定のペースで増加」→ FORECAST.LINEAR
迷ったら、まずFORECAST.LINEAR関数で予測してみてください。実績値と予測値の差が大きい場合は、季節変動が原因かもしれません。そのときはFORECAST.ETS関数に切り替えてみましょう。
回帰モデルの詳細や精度確認にはLINEST関数が役立ちます。複数のxをまとめて予測したい場合はTREND関数も検討してみてくださいね。
まとめ
ExcelのFORECAST.ETS関数は、指数平滑法で季節変動を含む時系列データの将来値を予測する関数です。
この記事のポイントをおさらいしましょう。
- FORECAST.ETS関数は、季節性とトレンドの両方を考慮した予測ができる。構文は
=FORECAST.ETS(target_date, values, timeline, [seasonality], [data_completion], [aggregation]) - seasonality引数は0(自動検出)で通常はOK。周期がわかっている場合は手動指定(月次なら12)も有効
- 信頼区間はFORECAST.ETS.CONFINT関数で計算できる。予測の確からしさを報告に添えると説得力が増す
- 季節変動がないデータにはFORECAST.LINEAR関数を使う
- データは季節周期の少なくとも2倍(月次12ヶ月周期なら24ヶ月分)を用意する
売上や来客数の季節パターンを活かした予測に、ぜひ活用してみてください。Excel関数の一覧はこちらから確認できます。
