
二重階乗(n!!)とはnから2ずつ減らしながら掛け合わせる特殊な階乗のこと。Excelでの計算方法は、Microsoft365 / Excel2021以降であれば配列関数「SEQUENCE」などを用いる。それ以外のバージョンではVBAでユーザー定義関数を作る。
目次
数学や統計を扱う場面で「二重階乗」という用語を目にすることがある。通常の階乗とは異なる計算方法であるが、エクセルを使っても簡単に算出可能である。
本記事では、エクセルで二重階乗を求める方法を関数とVBAの2つの手法に分けて詳しく解説する。
数学に苦手意識がある方も、ぜひエクセルでの計算を通じて「二重階乗」の理解を深めてほしい。
そもそも「二重階乗」とは?
二重階乗は、数学において通常の階乗とは異なる規則で数を掛け合わせていくものである。まずは基本的な定義と使用されるシーンを理解しておこう。
■階乗・二重階乗とは
通常の階乗(n!)は、n × (n-1) × (n-2) × … × 1 という形で、1までのすべての整数を掛け合わせる。これは高校数学でも頻出の計算であり、組み合わせや順列の計算に欠かせない。
一方、二重階乗(n!!)は、nから2ずつ減らした数を掛け合わせるという特殊な形式をとる。
- nが偶数のとき:n!! = n × (n-2) × (n-4) × … × 2
- nが奇数のとき:n!! = n × (n-2) × (n-4) × … × 1
(例)
- 6!! = 6 × 4 × 2 = 48
- 5!! = 5 × 3 × 1 = 15
このように、二重階乗は「一つおきに掛ける」という特徴を持っており、通常の階乗よりも計算結果が小さくなることが多い。
■二重階乗が使用される場面
二重階乗は、組み合わせ、確率論、物理学の公式など、特定の数学的分野で利用される。
特に球面調和関数、量子力学における波動関数の展開、ガンマ関数やベータ関数との関係式の中に登場することがある。
また、複雑な数列や漸化式の解析の中でも二重階乗が用いられるケースがある。
実務においては直接利用される場面は少ないが、教育や研究の現場では重要な概念の一つである。
エクセルを使った二重階乗の計算方法
エクセルには便利な関数が多く搭載されているが、二重階乗は標準関数として用意されていない。したがって、自分で関数やマクロを活用して二重階乗を求める必要がある。
■エクセルでは二重階乗が標準関数に含まれない
エクセルには「FACT」関数で通常の階乗を求めることができるが、二重階乗を直接計算する関数は存在しない。そのため、関数を組み合わせてカスタム数式を作成するか、あるいはVBAを用いて自作の関数を定義する必要がある。
このようなカスタマイズは一見面倒に感じられるかもしれないが、慣れてしまえば非常に強力なツールとなる。特に業務や教育現場で再利用したい場合には、VBAによる関数化が有効である。
■エクセルで二重階乗を計算する方法
①通常のセル関数(数式)で作成
Microsoft365やExcel 2021以降では、配列関数「SEQUENCE」などを使って、セル関数だけで二重階乗を実装可能である。これにより、VBAを使わずに複雑な計算を実現できるようになった。
②VBAを使ってユーザー定義関数を作成
古いバージョンのExcelではSEQUENCE関数が使えない場合もある。そのような場合にはVBAを活用することで、どのバージョンでも対応可能な柔軟な関数を作成することができる。
VBAは初回の設定に多少手間がかかるが、一度定義してしまえば以降は簡単に呼び出して使用できるため、作業の効率化につながる。
セル数式だけで二重階乗を計算する方法
Microsoft365やExcel 2021以降では、SEQUENCE関数などの新しい関数を使って、二重階乗を関数のみで計算できる。
使用する数式:
セル A1 に任意の数値(整数)を入力したときに、その二重階乗を計算する場合
=IF(MOD(A1,2)=0,PRODUCT(SEQUENCE(A1/2,,2,2)),PRODUCT(SEQUENCE((A1+1)/2,,1,2)))
解説:
※この数式はSEQUENCE関数が使用できるMicrosoft365またはExcel2021以降が対象となる。それ以前のバージョンではこの方法は利用できない点に注意が必要。
VBAのユーザー定義関数で二重階乗を作る方法
VBAを使えば、Excelのバージョンに関係なく、二重階乗の関数を自作できる。マクロ有効ブックとして保存することで、汎用性も高くなる
手順:
1.Excelで「Alt + F11」を押してVBAエディタを開く
2.メニューから「挿入」→「標準モジュール」を選択
3.以下のコードを貼り付ける
Function DoubleFactorial(n As Integer) As Double
Dim result As Double: result = 1
Dim i As Integer
For i = n To 1 Step -2
result = result * i
Next i
DoubleFactorial = result
End Function
4.Excelに戻って、B1セルに 「=DoubleFactorial(A1)」 のように入力
※古いExcelバージョンでも使える
※初回のみマクロの設定が必要。信頼できるブックとして保存しておくと便利である。