「二重階乗って、どんな計算をするの?」と疑問に思ったことはありませんか。
Excelで確率・統計の計算をするとき、こんな場面で悩む人が多くいます。「5の二重階乗の求め方がわからない」「FACT関数との違いが整理できない」といった声をよく聞きます。
そんな悩みを解決するのが、FACTDOUBLE関数です。
この記事では基本の書き方からFACT関数との違い、エラー対処法まで紹介します。
ExcelのFACTDOUBLE関数とは
FACTDOUBLE関数(読み方:ファクトダブル関数)は、指定した数値の二重階乗(n!!)を返す関数です。名前は「factorial(階乗)」+「double(二重)」からきています。
二重階乗(n!!)とは、nから2ずつ減らしながら掛ける計算です。
たとえば =FACTDOUBLE(7) と書くと「7×5×3×1 = 105」が返ります。数学では「7!!」と表記します。「!」が2つ付くのがポイントですね。
FACTDOUBLE関数でできることをまとめると、次のとおりです。
- 指定した数値の二重階乗を計算する
- 奇数同士の積(1×3×5×…)を求める
- 偶数同士の積(2×4×6×…)を求める
- 統計・物理の特殊な公式で使う
NOTE
FACTDOUBLE関数はExcel 2013以降のすべてのバージョンで使えます。Microsoft 365にも対応しています。
FACTDOUBLE関数の書き方(構文と引数)
基本構文
=FACTDOUBLE(数値)
カッコの中に「数値(二重階乗を求めたい値)」を1つだけ入れます。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 数値 | 必須 | 二重階乗を求めたい数値。0以上の整数を指定する |
FACT関数と同じく、引数は1つだけです。小数を指定した場合は、小数点以下が切り捨てられます。
FACTDOUBLE関数の使い方(実例つき)
奇数の二重階乗
奇数を指定すると、奇数だけを掛け合わせた値が返ります。
=FACTDOUBLE(5)
結果は「15」です。5×3×1 = 15 ですね。
=FACTDOUBLE(7)
結果は「105」です。7×5×3×1 = 105 です。
=FACTDOUBLE(9)
結果は「945」です。9×7×5×3×1 = 945 です。
偶数の二重階乗
偶数を指定すると、偶数だけを掛け合わせた値が返ります。
=FACTDOUBLE(6)
結果は「48」です。6×4×2 = 48 ですね。
=FACTDOUBLE(8)
結果は「384」です。8×6×4×2 = 384 です。
=FACTDOUBLE(10)
結果は「3840」です。10×8×6×4×2 = 3840 です。
偶数の二重階乗と通常階乗の変換公式
偶数の二重階乗には、通常の階乗に変換できる便利な公式があります。
nが偶数のとき、次の式が成り立ちます。
n!! = 2^(n/2) × (n/2)!
たとえば n = 6 の場合を確認してみましょう。
- 二重階乗: 6!! = 6×4×2 = 48
- 変換公式: 2^(6/2) × (6/2)! = 2^3 × 3! = 8 × 6 = 48
結果は一致しました。偶数の二重階乗は「2のべき乗 × 通常の階乗」で表せます。FACT関数を使うと、次のように書けます。
=2^(A1/2) * FACT(A1/2)
A1に偶数が入っていれば、=FACTDOUBLE(A1) と同じ結果になりますよ。
セル参照で指定する
A1セルに数値「7」が入っているとします。
=FACTDOUBLE(A1)
結果は「105」です。セル参照を使えば、値を変えるだけで結果が自動更新されますよ。
0と1を指定した場合
0と1の二重階乗はどちらも「1」です。
=FACTDOUBLE(0)
結果は「1」です。
=FACTDOUBLE(1)
こちらも「1」です。数学の規則として、0!! = 1、1!! = 1 と定義されています。これは空積(掛ける数が1つもないときの値を1とする規則)によるものです。
FACT関数との違い
FACTDOUBLE関数とFACT関数は、どちらも「掛け算の繰り返し」です。ただし、掛ける数の飛ばし方が異なります。
| 比較項目 | FACT関数(通常の階乗) | FACTDOUBLE関数(二重階乗) |
|---|---|---|
| 記号 | n! | n!! |
| 計算方法 | nから1ずつ減らして掛ける | nから2ずつ減らして掛ける |
| 5を指定 | 5×4×3×2×1 = 120 | 5×3×1 = 15 |
| 6を指定 | 6×5×4×3×2×1 = 720 | 6×4×2 = 48 |
| 主な用途 | 組み合わせ・順列の計算 | 統計・物理の特殊計算 |
ポイントは「1つおきに掛けるかどうか」です。
FACT関数はすべての整数を掛けます。そのため、値が大きくなりやすい特徴があります。一方、FACTDOUBLE関数は半分しか掛けないので、値がコンパクトになります。
なお、COMBIN関数やPERMUT関数は通常の階乗(FACT)を内部で使っています。組み合わせや順列の計算をするときは、これらの関数も参考にしてみてください。
2つの関数の数学的な関係
実は、通常の階乗は二重階乗2つの積で表せます。
FACT(n) = FACTDOUBLE(n) × FACTDOUBLE(n-1)
たとえば5の階乗で確認してみましょう。
=FACTDOUBLE(5) * FACTDOUBLE(4)
FACTDOUBLE(5) = 15、FACTDOUBLE(4) = 8 です。15×8 = 120 となります。=FACT(5) の結果「120」と一致しますね。
つまり通常の階乗は「奇数の積 × 偶数の積」に分解できます。これがFACT関数とFACTDOUBLE関数の数学的なつながりです。
よくあるエラーと対処法
FACTDOUBLE関数で発生しやすいエラーをまとめました。
| エラー | 原因 | 対処法 |
|---|---|---|
| #NUM! | 負の数・301以上を指定した | 0以上300以下の整数を指定する |
| #VALUE! | 引数に文字列が入っている | セル参照先が数値か確認する |
#NUM!エラー
もっとも多いエラーです。二重階乗は0以上の整数でしか定義されていません。
=FACTDOUBLE(-3)
この数式は#NUM!エラーになります。マイナスの値が入っていないか確認してみてください。
また、FACTDOUBLE(301)以上を指定した場合も#NUM!エラーが発生します。Excelが扱える数値の上限を超えるためです。
#VALUE!エラー
引数に文字列を指定するとこのエラーが出ます。
=FACTDOUBLE("abc")
セル参照を使っている場合は、参照先に文字列が入っていないか確認してみてください。
小数を指定したとき
小数を指定してもエラーにはなりません。小数点以下が切り捨てられて計算されます。
=FACTDOUBLE(7.9)
=FACTDOUBLE(7) と同じ結果で「105」を返します。意図しない結果を避けるため、整数を指定するのがおすすめです。
まとめ
ExcelのFACTDOUBLE関数は、指定した数値の二重階乗(n!!)を求める関数です。
ポイントを整理します。
- 構文は
=FACTDOUBLE(数値)の1引数のみ - nから2ずつ減らしながら掛けた値を返す
- 奇数を指定すると奇数だけの積、偶数を指定すると偶数だけの積になる
- 偶数の二重階乗は
n!! = 2^(n/2) × (n/2)!で通常の階乗に変換できる - 0と1の二重階乗はどちらも1(空積の定義)
- 負の数や301以上は#NUM!エラー、文字列は#VALUE!エラー
- FACT関数はすべて掛ける通常の階乗、FACTDOUBLE関数は1つおきに掛ける二重階乗
- FACT(n) = FACTDOUBLE(n) × FACTDOUBLE(n-1) の関係が成り立つ
まずは =FACTDOUBLE(7) で「7×5×3×1 = 105」から試してみてください。二重階乗の動きが直感的につかめますよ。
Googleスプレッドシートで同じ計算をしたい場合は、下記の記事も参考にしてみてください。
