「3.5の階乗って、どうやって計算するんだろう?」
スプレッドシートで統計や確率の計算をしていると、整数だけでなく小数の階乗が必要になる場面がありますよね。
FACT関数は整数の階乗しか計算できないので、小数には対応できません。
そんなときに使えるのがGAMMA関数です。整数はもちろん、小数に対しても「階乗を拡張した値」を返してくれます。
この記事では、GAMMA関数の基本の書き方から実務での活用例、FACT関数やGAMMALN関数との違いまで紹介します。
スプレッドシートのGAMMA関数とは?
GAMMA関数(読み方: ガンマ関数)は、指定した数値のガンマ関数値 Γ(x) を返す関数です。
名前はギリシャ文字の「Γ(ガンマ)」からきています。
ガンマ関数は「階乗を小数まで拡張した」数学の仕組みです。整数 n に対しては次の関係が成り立ちます。
- GAMMA(n) = (n-1)!
- つまり GAMMA(6) = 5! = 120
ポイントは、FACT関数では計算できない「小数の階乗」も扱えることです。たとえば =GAMMA(4.5) は約 11.63 を返します。
GAMMA関数にできることをまとめると、次のとおりです。
- 整数・小数を問わず、ガンマ関数値を計算する
- 統計分布(ガンマ分布・カイ二乗分布など)の確率計算に使う
- FACT関数ではできない小数の階乗相当の値を求める
NOTE
GAMMA関数はGoogleスプレッドシートの全バージョンで使えます。Excelとの互換性も完全なので、ファイルのやり取りでも安心です。
GAMMA関数の書き方(構文と引数)
基本構文
=GAMMA(数値)
カッコの中に「数値(ガンマ関数値を求めたい値)」を1つだけ入れます。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 数値 | 必須 | ガンマ関数値を求めたい正の数値。整数でも小数でも指定できる |
引数は1つだけなので、とてもシンプルですね。ただし、0や負の整数を指定するとエラーになるので注意してください。
GAMMA関数の基本的な使い方
整数を指定する
まずは整数を指定してみましょう。GAMMA(n) は (n-1)! を返します。
=GAMMA(1)
結果は「1」です。これは 0! = 1 に相当します。
=GAMMA(5)
結果は「24」です。4! = 4 x 3 x 2 x 1 = 24 ですね。
=GAMMA(6)
結果は「120」です。5! = 120 なので、=FACT(5) と同じ値が返ります。
整数の場合は「GAMMA(n) は (n-1) の階乗」と覚えておくとわかりやすいですよ。
小数を指定する
GAMMA関数の真価は、小数にも対応している点です。
=GAMMA(4.5)
結果は約「11.63」です。FACT関数では小数を整数に切り捨てて計算します。GAMMA関数なら小数でも正確な値を返してくれますよ。
=GAMMA(0.5)
結果は約「1.77」です。数学的には √π(パイの平方根)と等しい有名な定数ですよ。統計学の計算でよく登場します。
セル参照を使う
A1に数値「7」が入っているとします。
=GAMMA(A1)
結果は「720」です。GAMMA(7) = 6! = 720 ですね。セル参照を使えば、値を変えるだけで結果が自動更新されます。
GAMMA関数の実践的な使い方・応用例
階乗の値を一覧で確認する
A列に1から10までの数値が入っているとき、B列にGAMMA関数を使って各値のガンマ関数値(= 前の数の階乗)を一覧にできます。
=GAMMA(A1)
この数式をB1に入れて下にコピーすると、1から10までのガンマ関数値が一覧で表示されます。
| A列の値 | GAMMA(A) の結果 | 意味 |
|---|---|---|
| 1 | 1 | 0! = 1 |
| 2 | 1 | 1! = 1 |
| 3 | 2 | 2! = 2 |
| 4 | 6 | 3! = 6 |
| 5 | 24 | 4! = 24 |
| 6 | 120 | 5! = 120 |
GAMMA関数で組み合わせの一般化を計算する
整数の組み合わせはCOMBIN関数で計算できます。しかし、小数を含む一般化された組み合わせの計算にはGAMMA関数が必要です。
一般化された二項係数の公式は次のとおりです。
=GAMMA(n+1) / (GAMMA(r+1) * GAMMA(n-r+1))
たとえば n=5.5、r=2 のときは次のようになります。
=GAMMA(5.5+1) / (GAMMA(2+1) * GAMMA(5.5-2+1))
結果は約「12.37」です。COMBIN関数では整数しか扱えない計算を、GAMMA関数なら実現できます。
GAMMALN関数と組み合わせて大きな値を扱う
GAMMA関数は引数が約172以上になると、オーバーフローで#NUM!エラーになります。大きな値を扱うときは、GAMMALN関数を使うのが定番です。GAMMALN関数はガンマ関数の自然対数を返してくれます。
=GAMMA(172)
この数式は#NUM!エラーになります。
=GAMMALN(172)
こちらは約「711.7」を返します。対数に変換することで、巨大な値でもエラーなく計算できますよ。
対数の値を元に戻したいときは、EXP関数で =EXP(GAMMALN(172)) と書けます。ただし、172以上では結果が非常に大きいため精度に限界があります。その点は覚えておきましょう。
TIP
統計分布の計算で大きなガンマ関数値が必要なときは、GAMMALN関数で対数のまま計算を進め、最後にEXP関数で戻す方法がおすすめです。
よくあるエラーと対処法
GAMMA関数で発生しやすいエラーをまとめました。
| エラー | 原因 | 対処法 |
|---|---|---|
| #NUM! | 0または負の整数を指定した | 正の数値を指定する |
| #NUM! | 値が大きすぎる(約172以上) | GAMMALN関数を使って対数で計算する |
| #VALUE! | 引数に文字列が入っている | セル参照先が数値かどうか確認する |
0や負の整数を指定したとき
もっとも多いエラーです。ガンマ関数は0と負の整数では定義されていません。
=GAMMA(0)
この数式は#NUM!エラーになります。負の整数(-1、-2、-3…)も同様です。
ただし、負の小数(-0.5、-1.5 など整数でない負の値)は計算できます。 =GAMMA(-0.5) は約「-3.54」を返しますよ。
値が大きすぎるとき
GAMMA関数の結果が大きくなりすぎると、オーバーフローで#NUM!エラーになります。
=GAMMA(172)
この数式はエラーです。上限は約171.6までです。
大きな値が必要なときは =GAMMALN(数値) に切り替えてみてください。
FACT関数・GAMMALN関数との違い・使い分け
| 関数 | 動作 | 対応する値 | 用途 |
|---|---|---|---|
| GAMMA | ガンマ関数値 Γ(x) を返す | 正の実数(小数OK) | 小数の階乗・統計分布の計算 |
| FACT | 階乗 n! を返す | 0以上の整数のみ | 順列・組み合わせ・確率計算 |
| GAMMALN | LN(Γ(x)) を返す(自然対数) | 正の実数 | 大きな値のオーバーフロー回避 |
GAMMA関数とFACT関数の違い
FACT関数は整数の階乗専用で、小数は切り捨てて計算します。一方、GAMMA関数は小数にも正確に対応しています。ここが最大の違いです。
整数の階乗を計算するだけならFACT関数のほうがシンプルです。
- FACT(5) = 120(5の階乗をそのまま返す)
- GAMMA(6) = 120(引数を1つ大きくする必要がある)
FACT関数で n! を求めたいときは =FACT(n) と書けます。GAMMA関数だと =GAMMA(n+1) です。整数の階乗だけならFACT関数のほうが直感的ですね。
GAMMA関数とGAMMALN関数の関係
GAMMALN関数は、GAMMA関数の結果の自然対数を返す関数です。
=GAMMALN(5)
この結果(約3.18)は、=LN(GAMMA(5)) つまり =LN(24) と同じ値です。
GAMMA関数は約172以上でオーバーフローします。GAMMALN関数なら桁数が減るので安全に計算できますよ。大きなガンマ関数値が必要な場面では、ぜひ活用してみてください。
Excelとの違い
GAMMA関数はExcelとGoogleスプレッドシートで完全に同じ動作です。
| 項目 | Excel | Googleスプレッドシート |
|---|---|---|
| 構文 | =GAMMA(数値) | =GAMMA(数値) |
| 動作 | ガンマ関数値を返す | ガンマ関数値を返す |
| 対応バージョン | Excel 2013以降 | 全バージョン |
| エラー時 | #NUM! / #VALUE! | #NUM! / #VALUE! |
Excelでの使い方はExcelのGAMMA関数の記事で詳しく解説しています。
まとめ
GAMMA関数は、指定した数値のガンマ関数値 Γ(x) を返す関数です。
ポイントを整理します。
- 構文は
=GAMMA(数値)の1引数。整数にも小数にも対応 - 整数 n に対しては GAMMA(n) = (n-1)! の関係がある
- 小数の階乗を求められるのがFACT関数との最大の違い
- GAMMA(0.5) = √π(約1.77)は統計学でよく使う値
- 0や負の整数では#NUM!エラー。約172以上もオーバーフローする
- 大きな値にはGAMMALN関数(自然対数で返す)が便利
- ExcelのGAMMA関数と完全に同じ動作で、互換性も安心
まずは =GAMMA(5) で「24」が返ることを確認してみてください。
