<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>自然対数 &#8211; biz-tactics</title>
	<atom:link href="https://mashukabu.com/tag/%E8%87%AA%E7%84%B6%E5%AF%BE%E6%95%B0/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Thu, 04 Jun 2026 14:32:20 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1</generator>

<image>
	<url>https://mashukabu.com/wp-content/uploads/2022/04/cropped-site-icon-32x32.png</url>
	<title>自然対数 &#8211; biz-tactics</title>
	<link>https://mashukabu.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>ExcelのGAMMALN関数の使い方｜ガンマ関数の自然対数を計算する</title>
		<link>https://mashukabu.com/excel-gammaln-function/</link>
					<comments>https://mashukabu.com/excel-gammaln-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Tue, 05 May 2026 12:45:45 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[GAMMALN]]></category>
		<category><![CDATA[GAMMALN.PRECISE]]></category>
		<category><![CDATA[ガンマ関数]]></category>
		<category><![CDATA[対数尤度]]></category>
		<category><![CDATA[統計関数]]></category>
		<category><![CDATA[自然対数]]></category>
		<category><![CDATA[階乗]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=6525</guid>

					<description><![CDATA[ExcelのGAMMALN関数でガンマ関数Γ(x)の自然対数を計算する方法を解説。基本構文、GAMMA関数との違いとオーバーフロー回避の理由、GAMMALN.PRECISE関数との使い分け、対数尤度・組合せ計算・ベイズ統計の実務活用例まで紹介します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「Excelで200!（200の階乗）を計算しようとしたら<code>#NUM!</code>エラーになった」。「対数尤度の数式に出てきたGAMMALNって何？」。統計や確率の計算を進めていると、こんな場面に出会いますよね。</p>



<p class="wp-block-paragraph">そんなときに使えるのが、ExcelのGAMMALN関数です。ガンマ関数Γ(x)の自然対数を返す関数で、数値が大きくなりすぎてオーバーフローする問題を回避できます。統計計算の縁の下の力持ちなんですよ。</p>



<p class="wp-block-paragraph">この記事ではExcelのGAMMALN関数の使い方を、構文の基本から実務での活用例まで丁寧に解説します。GAMMA関数との違い、GAMMALN.PRECISE関数との使い分け、対数尤度・組合せ計算の実例まで、まるごと整理しますよ。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-1" checked><label class="toc-title" for="toc-checkbox-1">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">ExcelのGAMMALN関数とは</a><ol><li><a href="#toc2" tabindex="0">なぜ「対数」を取るのか</a></li></ol></li><li><a href="#toc3" tabindex="0">GAMMALN関数の基本構文と引数</a><ol><li><a href="#toc4" tabindex="0">基本的な使い方</a></li></ol></li><li><a href="#toc5" tabindex="0">GAMMALN関数とGAMMA関数の違い</a><ol><li><a href="#toc6" tabindex="0">使い分けの基準</a></li></ol></li><li><a href="#toc7" tabindex="0">GAMMALN.PRECISE関数との違い</a></li><li><a href="#toc8" tabindex="0">GAMMALN関数の実務活用例</a><ol><li><a href="#toc9" tabindex="0">活用例1: 対数尤度の計算（最尤推定）</a></li><li><a href="#toc10" tabindex="0">活用例2: 組合せ係数（二項係数）の対数</a></li><li><a href="#toc11" tabindex="0">活用例3: ベイズ統計の正規化定数</a></li></ol></li><li><a href="#toc12" tabindex="0">EXP関数と組み合わせて元の値に戻す</a><ol><li><a href="#toc13" tabindex="0">大きな階乗を計算する</a></li></ol></li><li><a href="#toc14" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc15" tabindex="0">#NUM! エラー</a></li><li><a href="#toc16" tabindex="0">#VALUE! エラー</a></li><li><a href="#toc17" tabindex="0">#NAME? エラー</a></li><li><a href="#toc18" tabindex="0">結果がオーバーフローする（EXP適用時）</a></li></ol></li><li><a href="#toc19" tabindex="0">まとめ：GAMMALN関数で対数スケールの統計計算を安定させよう</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">ExcelのGAMMALN関数とは</span></h2>



<p class="wp-block-paragraph">ExcelのGAMMALN関数（読み方: ガンマ・エルエヌ関数）は、<strong>ガンマ関数Γ(x)の自然対数</strong>を返す関数です。</p>



<p class="wp-block-paragraph">ガンマ関数とは、階乗（n! = n×(n-1)×…×1）を実数全体に拡張した関数のことです。整数nに対してはΓ(n) = (n-1)!となります。「GAMMA」はギリシャ文字のガンマ（Γ）に由来する数学用語ですよ。「LN」は自然対数（Logarithm Natural、底がe ≈ 2.718の対数）の略ですね。</p>



<p class="wp-block-paragraph">たとえばGAMMALN(5)は ln(4!) = ln(24) ≈ 3.178 を返します。直接GAMMA(5) = 24を計算する代わりに、その対数値を返してくれるイメージですよ。</p>



<p class="wp-block-paragraph">ExcelのGAMMALN関数にできることをまとめると、次のとおりです。</p>



<ul class="wp-block-list"><li>ガンマ関数の自然対数（log値）を直接計算する</li><li>大きな階乗（170!以上）をオーバーフローさせずに扱う</li><li>対数尤度・組合せ係数・ベイズ統計の正規化定数を計算する</li><li>統計分布の確率密度を対数スケールで安定計算する</li></ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>GAMMALN関数はすべての現行Excelバージョンで使えます。Excel 2010以降では、より高精度なGAMMALN.PRECISE関数も追加されていますよ。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc2">なぜ「対数」を取るのか</span></h3>



<p class="wp-block-paragraph">実はExcelのFACT関数（階乗を求める関数）には限界があります。Excelが扱える最大数値は約1.79×10^308で、170! ≈ 7.26×10^306がギリギリの上限です。171!以上は<code>#NUM!</code>エラーになってしまうんですよね。</p>



<p class="wp-block-paragraph">そこで登場するのがGAMMALN関数です。対数を取れば、ln(170!) ≈ 706.6、ln(1000!) ≈ 5912となります。極めて大きな階乗でも普通の数値範囲で扱えるんですよ。「大きな数を直接扱うのは無理だから、log値で計算して最後に元に戻す」というのが、統計計算の定番テクニックですね。</p>



<h2 class="wp-block-heading"><span id="toc3">GAMMALN関数の基本構文と引数</span></h2>



<p class="wp-block-paragraph">GAMMALN関数の構文はとてもシンプルです。</p>



<pre class="wp-block-code"><code>=GAMMALN(x)</code></pre>



<p class="wp-block-paragraph">引数は1つだけ。必須なので省略できませんよ。</p>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/省略可</th><th>説明</th></tr></thead><tbody><tr><td>x</td><td>必須</td><td>ガンマ関数の対数を計算する正の数値</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc4">基本的な使い方</span></h3>



<p class="wp-block-paragraph">セルA2に「5」と入力されているとして、<code>=GAMMALN(A2)</code>と書くと、ガンマ関数の自然対数が返ります。</p>



<figure class="wp-block-table"><table><thead><tr><th>A列（x）</th><th>B列（数式）</th><th>結果</th></tr></thead><tbody><tr><td>1</td><td>=GAMMALN(A2)</td><td>0</td></tr><tr><td>2</td><td>=GAMMALN(A3)</td><td>0</td></tr><tr><td>3</td><td>=GAMMALN(A4)</td><td>約0.693</td></tr><tr><td>5</td><td>=GAMMALN(A5)</td><td>約3.178</td></tr><tr><td>10</td><td>=GAMMALN(A6)</td><td>約12.802</td></tr><tr><td>100</td><td>=GAMMALN(A7)</td><td>約359.134</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">GAMMALN(1) = ln(Γ(1)) = ln(0!) = 0、GAMMALN(2) = ln(Γ(2)) = ln(1!) = 0となります。整数値を入れるとln((x-1)!)が返ると覚えておくと便利ですよ。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>GAMMALN関数は小数も受け取れます。たとえば<code>=GAMMALN(2.5)</code>は約0.285を返します。連続的なxに対する値も計算できるのが、ガンマ関数の強みですね。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc5">GAMMALN関数とGAMMA関数の違い</span></h2>



<p class="wp-block-paragraph">ExcelにはGAMMA関数（Excel 2013以降で利用可能）もあり、こちらはΓ(x)を直接返します。GAMMALN関数とは「対数を取るかどうか」が決定的な違いです。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>返す値</th><th>例（x=5）</th></tr></thead><tbody><tr><td>GAMMA(x)</td><td>Γ(x) の値そのもの</td><td>24</td></tr><tr><td>GAMMALN(x)</td><td>ln(Γ(x)) の対数値</td><td>約3.178</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">両関数の関係式は次のようになります。</p>



<pre class="wp-block-code"><code>GAMMALN(x) = LN(GAMMA(x))
GAMMA(x) = EXP(GAMMALN(x))</code></pre>



<h3 class="wp-block-heading"><span id="toc6">使い分けの基準</span></h3>



<p class="wp-block-paragraph">xが小さいとき（おおむねx ≤ 170）はどちらを使ってもOKです。問題はxが大きい場合ですよ。</p>



<ul class="wp-block-list"><li><strong>xが小さい（x ≤ 170程度）</strong>: 直感的なGAMMA関数で十分</li><li><strong>xが大きい（x > 170）</strong>: GAMMALN関数でないとオーバーフローする</li><li><strong>対数尤度・対数確率を計算する</strong>: 最初からGAMMALN関数を使うほうが速い</li></ul>



<p class="wp-block-paragraph">統計計算では「最終的に対数を取りたい」場面が多いですよね。最初からGAMMALN関数を使うほうが効率的です。GAMMA関数で計算してからLN関数で対数を取ると、計算誤差も増えやすいんですよ。</p>



<h2 class="wp-block-heading"><span id="toc7">GAMMALN.PRECISE関数との違い</span></h2>



<p class="wp-block-paragraph">Excel 2010以降では、GAMMALN関数の精度向上版としてGAMMALN.PRECISE関数が追加されました。両者の機能は同じですが、内部の計算アルゴリズムが異なります。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>利用可能バージョン</th><th>特徴</th></tr></thead><tbody><tr><td>GAMMALN</td><td>すべて</td><td>互換性重視、通常用途では十分な精度</td></tr><tr><td>GAMMALN.PRECISE</td><td>Excel 2010以降</td><td>浮動小数点誤差をより抑えた高精度版</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">実務での使い分けはシンプルですよ。</p>



<ul class="wp-block-list"><li><strong>業務での通常利用</strong>: GAMMALNで十分</li><li><strong>論文・厳密な統計分析</strong>: GAMMALN.PRECISEを推奨</li><li><strong>古いExcel環境との互換性が必要</strong>: GAMMALNを使う</li></ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>多くのケースでは両関数の結果はほぼ同じです。「精度の違いが結果に響く」のは、極端に大きいxや、誤差が累積する反復計算の場面ですよ。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc8">GAMMALN関数の実務活用例</span></h2>



<p class="wp-block-paragraph">GAMMALN関数は単独で使うよりも、統計計算の一部として組み込まれることが多い関数です。代表的な活用パターンを3つ紹介しますね。</p>



<h3 class="wp-block-heading"><span id="toc9">活用例1: 対数尤度の計算（最尤推定）</span></h3>



<p class="wp-block-paragraph">ポアソン分布の対数尤度は、次のような数式で表されます。</p>



<pre class="wp-block-code"><code>log L(λ) = Σ [k × log(λ) - λ - log(k!)]</code></pre>



<p class="wp-block-paragraph">ここで<code>log(k!)</code>の部分をGAMMALN関数で計算します。<code>log(k!) = GAMMALN(k+1)</code>という関係を使うわけですね。</p>



<p class="wp-block-paragraph">たとえばA列に観測データ（k=2, 3, 1, 4, 2）が入っていて、λ=2.4と仮定したとします。各データの対数尤度寄与は次のように計算できますよ。</p>



<pre class="wp-block-code"><code>=A2*LN(2.4) - 2.4 - GAMMALN(A2+1)</code></pre>



<p class="wp-block-paragraph">これを全データに対してSUM関数（合計を求める関数）で合計すれば、log L(2.4)が求まります。最尤推定では、このlog Lを最大化するλを探すことになりますよ。</p>



<h3 class="wp-block-heading"><span id="toc10">活用例2: 組合せ係数（二項係数）の対数</span></h3>



<p class="wp-block-paragraph">二項係数 C(n, k) = n! / (k!(n-k)!) は、nが大きいと階乗だけでオーバーフローしてしまいます。GAMMALN関数を使えば、対数スケールで安定計算できますね。</p>



<pre class="wp-block-code"><code>log C(n, k) = GAMMALN(n+1) - GAMMALN(k+1) - GAMMALN(n-k+1)</code></pre>



<p class="wp-block-paragraph">例として、log C(200, 100)を計算してみましょう。</p>



<pre class="wp-block-code"><code>=GAMMALN(201) - 2*GAMMALN(101)</code></pre>



<p class="wp-block-paragraph">結果は約135.75。これは200から100個を選ぶ組合せ数の自然対数です。直接 <code>=COMBIN(200,100)</code> でも計算できますが、もっと大きなn（n=1000など）では<code>#NUM!</code>エラーになります。GAMMALN関数なら対数のまま扱えるので限界がありませんよ。</p>



<h3 class="wp-block-heading"><span id="toc11">活用例3: ベイズ統計の正規化定数</span></h3>



<p class="wp-block-paragraph">ベイズ統計の事後分布の正規化定数（ベータ関数）は、次のように計算できます。</p>



<pre class="wp-block-code"><code>ベータ関数: B(a, b) = Γ(a)Γ(b) / Γ(a+b)
log B(a, b) = GAMMALN(a) + GAMMALN(b) - GAMMALN(a+b)</code></pre>



<p class="wp-block-paragraph">たとえばコイントスのベイズ更新でBeta(10, 5)分布を扱うとき、正規化定数の対数は次のように計算しますよ。</p>



<pre class="wp-block-code"><code>=GAMMALN(10) + GAMMALN(5) - GAMMALN(15)</code></pre>



<p class="wp-block-paragraph">結果は約-9.21。確率密度関数の計算では、この対数値を使って指数和を取るパターンが多いですよね。</p>



<h2 class="wp-block-heading"><span id="toc12">EXP関数と組み合わせて元の値に戻す</span></h2>



<p class="wp-block-paragraph">GAMMALN関数の結果を「元のガンマ関数の値」に戻したいときは、EXP関数（自然対数の指数関数、e^xを返す関数）と組み合わせます。</p>



<pre class="wp-block-code"><code>=EXP(GAMMALN(x))</code></pre>



<p class="wp-block-paragraph">これでGAMMA(x)と同じ値が得られます。たとえば<code>=EXP(GAMMALN(5))</code> は24（=4!）を返しますよ。</p>



<h3 class="wp-block-heading"><span id="toc13">大きな階乗を計算する</span></h3>



<p class="wp-block-paragraph">FACT関数では計算できない171!以上の階乗を計算したい場合、GAMMALN関数のままでとどめるのが鉄則です。</p>



<pre class="wp-block-code"><code>=FACT(171)        → #NUM! エラー
=GAMMALN(172)     → 約711.7（log(171!)の値）
=EXP(GAMMALN(172))→ #NUM! エラー（exp(711)はオーバーフロー）</code></pre>



<p class="wp-block-paragraph">つまり「対数のまま計算を続ける」のがGAMMALN関数の正しい使い方です。最後に値を比較するときも、対数同士で大小比較すれば問題なく扱えますよ。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>大きな階乗の比率（n!/m!のような形）は、GAMMALN(n+1) &#8211; GAMMALN(m+1)を計算してからEXP関数で戻す方法が安全です。差分を取れば値が小さくなるので、最後の指数化でもオーバーフローしません。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc14">よくあるエラーと対処法</span></h2>



<p class="wp-block-paragraph">GAMMALN関数を使っていて遭遇しやすいエラーを整理しますね。</p>



<h3 class="wp-block-heading"><span id="toc15">#NUM! エラー</span></h3>



<p class="wp-block-paragraph">xに 0 または負の数を指定すると発生します。ガンマ関数は正の実数で定義されているので、0以下の値は受け付けません。</p>



<pre class="wp-block-code"><code>=GAMMALN(0)   → #NUM!
=GAMMALN(-2)  → #NUM!</code></pre>



<p class="wp-block-paragraph">対処法はシンプルで、xに正の数を指定することです。データに負の値が混じる可能性があるなら、IFERROR関数（エラー時の代替値を返す関数）やIF関数で事前にチェックしましょう。</p>



<pre class="wp-block-code"><code>=IF(A2&gt;0, GAMMALN(A2), &quot;xは正の値にしてください&quot;)</code></pre>



<h3 class="wp-block-heading"><span id="toc16">#VALUE! エラー</span></h3>



<p class="wp-block-paragraph">xに数値以外（文字列など）を指定すると発生します。セル参照先が空白や文字列になっていないか確認してくださいね。</p>



<pre class="wp-block-code"><code>=GAMMALN(&quot;apple&quot;)  → #VALUE!</code></pre>



<h3 class="wp-block-heading"><span id="toc17">#NAME? エラー</span></h3>



<p class="wp-block-paragraph">GAMMALN.PRECISE関数をExcel 2007以前で使うと発生します。対処法は、互換版のGAMMALN関数を使うか、Excelをアップデートすることですよ。</p>



<h3 class="wp-block-heading"><span id="toc18">結果がオーバーフローする（EXP適用時）</span></h3>



<p class="wp-block-paragraph"><code>=EXP(GAMMALN(x))</code> でxが大きい場合、対数値が約709を超えるとEXP関数側でオーバーフローします。これはGAMMALN関数の問題ではなく、EXP関数の限界なんですよね。</p>



<p class="wp-block-paragraph">対処法は「対数のまま計算を続ける」こと。元の値に戻す必要がない計算（対数尤度・対数確率など）なら、EXP関数を使わずそのまま使い続けるのが鉄則ですよ。</p>



<h2 class="wp-block-heading"><span id="toc19">まとめ：GAMMALN関数で対数スケールの統計計算を安定させよう</span></h2>



<p class="wp-block-paragraph">ExcelのGAMMALN関数は、ガンマ関数Γ(x)の自然対数を返す関数です。一見地味ですが、統計計算の足回りを支える重要な関数なんですよ。</p>



<ul class="wp-block-list"><li>構文は<code>=GAMMALN(x)</code>の1引数だけ</li><li>xは正の数値のみ受け付ける（0以下は<code>#NUM!</code>エラー）</li><li>大きな階乗（171!以上）をオーバーフローさせずに扱える</li><li>GAMMA関数の値は<code>=EXP(GAMMALN(x))</code>で復元できる</li><li>高精度版のGAMMALN.PRECISE関数（Excel 2010以降）もある</li><li>対数尤度・組合せ係数・ベイズ統計の正規化定数で活躍する</li></ul>



<p class="wp-block-paragraph">ガンマ分布の確率を直接計算したい場合は、姉妹記事の<a href="https://mashukabu.com/excel-gamma-dist-function/">ExcelのGAMMA.DIST関数の使い方</a>を参考にしてください。確率からx値を逆算したい場合は、<a href="https://mashukabu.com/excel-gamma-inv-function/">ExcelのGAMMA.INV関数の使い方</a>が役立ちますよ。</p>



<p class="wp-block-paragraph">GAMMALN関数を覚えておくと、統計計算で「数値が大きすぎる」「オーバーフローする」と困ったときの強力な武器になります。ぜひ実務でも活用してみてくださいね。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-gammaln-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ExcelのGAMMALN.PRECISE関数の使い方｜GAMMALN関数との違いと精度比較</title>
		<link>https://mashukabu.com/gammaln-precise/</link>
					<comments>https://mashukabu.com/gammaln-precise/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Tue, 05 May 2026 12:45:43 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[GAMMALN]]></category>
		<category><![CDATA[GAMMALN.PRECISE]]></category>
		<category><![CDATA[ガンマ関数]]></category>
		<category><![CDATA[対数尤度]]></category>
		<category><![CDATA[統計関数]]></category>
		<category><![CDATA[自然対数]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=6523</guid>

					<description><![CDATA[ExcelのGAMMALN.PRECISE関数の使い方を解説。GAMMALN関数との精度・対応バージョンの違い、Excel 2010で追加された.PRECISE関数群の命名規則の背景、対数尤度・組合せ計算・ベイズ統計の実務活用例まで、判断フロー付きで紹介します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「ExcelのGAMMALN.PRECISEって、GAMMALN関数とどう違うんだろう？」。ガンマ関数の自然対数を調べていると、ExcelにはGAMMALN関数とGAMMALN.PRECISE関数の2つがあることに気づきますよね。</p>



<p class="wp-block-paragraph">名前が似ていてどちらを使えばいいか迷いますが、結論はシンプルです。GAMMALN.PRECISE関数は、Excel 2010で追加された「高精度版GAMMALN」です。下位互換性を保つために、旧関数を残したまま改良版が新名で用意されたんですよ。</p>



<p class="wp-block-paragraph">この記事ではExcelのGAMMALN.PRECISE関数の使い方を、GAMMALN関数との違いを軸に解説します。<code>.PRECISE</code>が何を意味するのか、なぜ高精度版が必要だったのか、どちらを選ぶべきかまで判断フロー付きで整理しますよ。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">ExcelのGAMMALN.PRECISE関数とは</a><ol><li><a href="#toc2" tabindex="0">なぜ「精密版」が必要だったのか</a></li></ol></li><li><a href="#toc3" tabindex="0">GAMMALN.PRECISE関数の基本構文と引数</a><ol><li><a href="#toc4" tabindex="0">基本的な使い方</a></li></ol></li><li><a href="#toc5" tabindex="0">GAMMALN関数との違いと使い分け</a><ol><li><a href="#toc6" tabindex="0">数値出力の比較表</a></li><li><a href="#toc7" tabindex="0">使い分けの判断フロー</a></li></ol></li><li><a href="#toc8" tabindex="0">「.PRECISE」とは何か：Excel 2010の精度改善関数群</a><ol><li><a href="#toc9" tabindex="0">PRECISE関数ファミリー一覧</a></li><li><a href="#toc10" tabindex="0">なぜ既存関数を改修せず新関数を追加したのか</a></li></ol></li><li><a href="#toc11" tabindex="0">GAMMALN.PRECISE関数の実務活用例</a><ol><li><a href="#toc12" tabindex="0">活用例1: 大きな組み合わせ（nCr）の対数化</a></li><li><a href="#toc13" tabindex="0">活用例2: 対数尤度の反復計算で精度を担保する</a></li><li><a href="#toc14" tabindex="0">活用例3: ベイズ統計の正規化定数</a></li></ol></li><li><a href="#toc15" tabindex="0">EXP関数で元の値に戻す方法と注意点</a><ol><li><a href="#toc16" tabindex="0">大きな階乗を計算する際のオーバーフロー注意</a></li></ol></li><li><a href="#toc17" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc18" tabindex="0">#NUM! エラー</a></li><li><a href="#toc19" tabindex="0">#VALUE! エラー</a></li><li><a href="#toc20" tabindex="0">#NAME? エラー（Excel 2007以前との互換性）</a></li></ol></li><li><a href="#toc21" tabindex="0">まとめ：GAMMALN.PRECISEで高精度な統計計算を</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">ExcelのGAMMALN.PRECISE関数とは</span></h2>



<p class="wp-block-paragraph">ExcelのGAMMALN.PRECISE関数（読み方: ガンマ・エルエヌ・プリサイス関数）は、<strong>ガンマ関数Γ(x)の自然対数を高精度に返す関数</strong>です。</p>



<p class="wp-block-paragraph">「GAMMA」はギリシャ文字のガンマ（Γ）に由来し、階乗を実数全体に拡張した数学関数を指します。「LN」は自然対数（底がe ≈ 2.718の対数）の略です。「PRECISE」は英語で「精密な」という意味で、<a href="https://mashukabu.com/excel-gammaln-function/">GAMMALN関数</a>の精度を向上させた関数であることを示しています。</p>



<p class="wp-block-paragraph">たとえば<code>=GAMMALN.PRECISE(5)</code>は ln(4!) = ln(24) ≈ 3.178 を返します。GAMMALN関数とまったく同じ値ですね。</p>



<p class="wp-block-paragraph">ExcelのGAMMALN.PRECISE関数にできることをまとめると、次のとおりです。</p>



<ul class="wp-block-list"><li>ガンマ関数の自然対数 ln(Γ(x)) を高精度に計算する</li><li>大きな階乗（171!以上）をオーバーフローさせずに扱える</li><li>対数尤度（観測データから推定値の確からしさを表す指標）の反復計算で誤差を抑える</li><li>統計分布のパラメータ推定で精度を担保する</li></ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>GAMMALN.PRECISE関数はExcel 2010以降で利用できます。Excel 2007以前のファイルとの互換性が必要な場合は、GAMMALN関数を使ってくださいね。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc2">なぜ「精密版」が必要だったのか</span></h3>



<p class="wp-block-paragraph">Excel 2007以前のGAMMALN関数には、特定の値で精度がわずかに低下する問題がありました。Microsoftはこの問題への対応として、興味深いアプローチを採りました。</p>



<p class="wp-block-paragraph">それが「<strong>既存のGAMMALN関数は修正せず、高精度版を別関数として追加する</strong>」という方針です。下位互換性を保つための判断ですね。既存のGAMMALN関数の中身を変更すると、過去のワークブックで計算結果が変わるリスクがあるからです。</p>



<p class="wp-block-paragraph">そこでExcel 2010で、改良版として「GAMMALN.PRECISE」が新設されました。旧ファイルは旧GAMMALN関数で互換性を保ちつつ、新規プロジェクトはPRECISE版で精度向上の恩恵を受けられるようになったんですよ。</p>



<h2 class="wp-block-heading"><span id="toc3">GAMMALN.PRECISE関数の基本構文と引数</span></h2>



<p class="wp-block-paragraph">GAMMALN.PRECISE関数の構文はとてもシンプルです。</p>



<pre class="wp-block-code"><code>=GAMMALN.PRECISE(x)</code></pre>



<p class="wp-block-paragraph">引数は1つだけ。必須なので省略できません。</p>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/省略</th><th>説明</th></tr></thead><tbody><tr><td>x</td><td>必須</td><td>ガンマ関数の対数を計算する正の実数</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc4">基本的な使い方</span></h3>



<p class="wp-block-paragraph">セルA2に「5」と入力されているとして、<code>=GAMMALN.PRECISE(A2)</code>と書くと、ガンマ関数の自然対数が返ります。</p>



<figure class="wp-block-table"><table><thead><tr><th>A列（x）</th><th>B列（数式）</th><th>結果</th></tr></thead><tbody><tr><td>1</td><td>=GAMMALN.PRECISE(A2)</td><td>0</td></tr><tr><td>2</td><td>=GAMMALN.PRECISE(A3)</td><td>0</td></tr><tr><td>2.5</td><td>=GAMMALN.PRECISE(A4)</td><td>約0.285</td></tr><tr><td>3</td><td>=GAMMALN.PRECISE(A5)</td><td>約0.693</td></tr><tr><td>5</td><td>=GAMMALN.PRECISE(A6)</td><td>約3.178</td></tr><tr><td>10</td><td>=GAMMALN.PRECISE(A7)</td><td>約12.802</td></tr><tr><td>100</td><td>=GAMMALN.PRECISE(A8)</td><td>約359.134</td></tr><tr><td>172</td><td>=GAMMALN.PRECISE(A9)</td><td>約711.715</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">GAMMALN.PRECISE(1) = ln(Γ(1)) = ln(1) = 0、GAMMALN.PRECISE(2) = ln(Γ(2)) = ln(1) = 0 となります。整数値を入れると ln((x-1)!) が返ると覚えておくと便利ですよ。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>GAMMALN.PRECISE関数は小数も受け取れます。<code>=GAMMALN.PRECISE(2.5)</code>は約0.285を返します。連続的なxに対して値を計算できるのが、ガンマ関数の強みですね。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc5">GAMMALN関数との違いと使い分け</span></h2>



<p class="wp-block-paragraph">GAMMALN.PRECISE関数とGAMMALN関数の違いを、3つの軸で整理しましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>GAMMALN</th><th>GAMMALN.PRECISE</th></tr></thead><tbody><tr><td>構文</td><td>=GAMMALN(x)</td><td>=GAMMALN.PRECISE(x)</td></tr><tr><td>戻り値</td><td>ln(Γ(x))</td><td>ln(Γ(x))（高精度）</td></tr><tr><td>引数の範囲</td><td>正の実数のみ</td><td>正の実数のみ</td></tr><tr><td>精度</td><td>標準精度</td><td>より高い数値精度</td></tr><tr><td>対応バージョン</td><td>すべてのバージョン</td><td>Excel 2010以降</td></tr><tr><td>導入の経緯</td><td>Excel初期から搭載</td><td>Excel 2010で精度改善目的で追加</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">戻り値の数学的な意味は同じですが、内部の計算アルゴリズムが異なります。</p>



<h3 class="wp-block-heading"><span id="toc6">数値出力の比較表</span></h3>



<p class="wp-block-paragraph">実際に同じxに対して、両関数の出力を並べてみましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>x</th><th>=GAMMALN(x)</th><th>=GAMMALN.PRECISE(x)</th><th>差</th></tr></thead><tbody><tr><td>1</td><td>0</td><td>0</td><td>0</td></tr><tr><td>5</td><td>約3.178</td><td>約3.178</td><td>ほぼ0</td></tr><tr><td>10</td><td>約12.802</td><td>約12.802</td><td>ほぼ0</td></tr><tr><td>100</td><td>約359.134</td><td>約359.134</td><td>ほぼ0</td></tr><tr><td>1000</td><td>約5905.220</td><td>約5905.220</td><td>ほぼ0</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">現行のExcelバージョン（Excel 2010以降）では、両関数の結果は実用上ほぼ同じです。小数点以下10桁レベルで比較しても、ほとんど差はありません。</p>



<h3 class="wp-block-heading"><span id="toc7">使い分けの判断フロー</span></h3>



<p class="wp-block-paragraph">実務での選び方はシンプルです。次の3つの軸で判断してください。</p>



<pre class="wp-block-code"><code>Q1. Excel 2007以前のファイルと互換性が必要？
  → YES: GAMMALN関数を使う（PRECISEは非対応）
  → NO: Q2へ

Q2. 論文・厳密な統計分析・誤差が累積する反復計算？
  → YES: GAMMALN.PRECISE関数を推奨
  → NO: Q3へ

Q3. 通常の業務利用
  → どちらでもOK（GAMMALN.PRECISEで統一すると新規プロジェクトに無難）</code></pre>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>新規プロジェクトでExcel 2010以降の環境しか使わないなら、最初からGAMMALN.PRECISEで統一するのが無難です。「精密版を使っている」と命名で明示できるので、共同編集者にも親切ですよ。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc8">「.PRECISE」とは何か：Excel 2010の精度改善関数群</span></h2>



<p class="wp-block-paragraph">GAMMALN.PRECISEの「.PRECISE」というサフィックスは、Excel 2010で大規模に行われた<strong>精度改善関数群</strong>の一員であることを示しています。</p>



<h3 class="wp-block-heading"><span id="toc9">PRECISE関数ファミリー一覧</span></h3>



<p class="wp-block-paragraph">Excel 2010では、「旧関数を残しつつ新名で改良版を追加」というアプローチで多数の関数が刷新されました。</p>



<figure class="wp-block-table"><table><thead><tr><th>旧関数名</th><th>新関数（Excel 2010で追加）</th><th>改善内容</th></tr></thead><tbody><tr><td>GAMMALN</td><td>GAMMALN.PRECISE</td><td>浮動小数点精度の向上</td></tr><tr><td>FLOOR</td><td>FLOOR.PRECISE / FLOOR.MATH</td><td>負の数の切り捨て挙動を明確化</td></tr><tr><td>CEILING</td><td>CEILING.PRECISE / CEILING.MATH</td><td>負の数の切り上げ挙動を明確化</td></tr><tr><td>PERCENTILE</td><td>PERCENTILE.INC / PERCENTILE.EXC</td><td>包含/排他の挙動を選べる</td></tr><tr><td>QUARTILE</td><td>QUARTILE.INC / QUARTILE.EXC</td><td>同上</td></tr><tr><td>RANK</td><td>RANK.AVG / RANK.EQ</td><td>同順位の処理方式を選べる</td></tr><tr><td>MODE</td><td>MODE.SNGL / MODE.MULT</td><td>単一値/配列の選択</td></tr><tr><td>VAR</td><td>VAR.S / VAR.P</td><td>標本/母集団の選択を明示</td></tr><tr><td>STDEV</td><td>STDEV.S / STDEV.P</td><td>同上</td></tr><tr><td>COVAR</td><td>COVARIANCE.S / COVARIANCE.P</td><td>同上</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">サフィックスのパターンは「.PRECISE」「.INC（包含）」「.EXC（排他）」「.S（標本）」「.P（母集団）」などです。それぞれ役割が異なりますが、<strong>共通しているのは「下位互換性のために旧関数を残しつつ、新名で意味を明確にした版を追加した」</strong>という点ですよ。</p>



<h3 class="wp-block-heading"><span id="toc10">なぜ既存関数を改修せず新関数を追加したのか</span></h3>



<p class="wp-block-paragraph">「最初からGAMMALN関数の精度を上げればよかったのでは？」と思いますよね。Microsoftがこの方針を選ばなかった理由は、<strong>過去のワークブックの計算結果を変えないため</strong>です。</p>



<p class="wp-block-paragraph">仮に既存のGAMMALN関数を修正すると、何百万もの既存ファイルで同じ数式が違う結果を返す事態になります。会計帳簿や統計レポートでこれが起きると、検証の手間も信頼性のリスクも甚大ですよね。</p>



<p class="wp-block-paragraph">そこでMicrosoftは「旧関数は互換性関数として温存」「新関数は明確な命名で追加」という方針を採りました。GAMMALN.PRECISEもこの設計思想の中で生まれた関数なんですよ。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>Excel 2010以降では、関数の挿入ダイアログで「互換性関数」というカテゴリが新設されました。旧GAMMALN関数もここに分類されています。新規プロジェクトでは新関数（PRECISE版など）を使うのが推奨されていますよ。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc11">GAMMALN.PRECISE関数の実務活用例</span></h2>



<p class="wp-block-paragraph">GAMMALN.PRECISE関数は単独で使うよりも、統計計算の一部として組み込まれることが多い関数です。代表的な活用パターンを3つ紹介しますね。</p>



<h3 class="wp-block-heading"><span id="toc12">活用例1: 大きな組み合わせ（nCr）の対数化</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-combin/">COMBIN関数</a>（組み合わせの数を返す関数）は、大きな数値でオーバーフローすることがあります。GAMMALN.PRECISEを使えば、対数の性質で安全に計算できますね。</p>



<p class="wp-block-paragraph">組み合わせの公式 nCr = n! / (r! × (n-r)!) を対数に変換すると、次のようになります。</p>



<pre class="wp-block-code"><code>log C(n, r) = GAMMALN.PRECISE(n+1) - GAMMALN.PRECISE(r+1) - GAMMALN.PRECISE(n-r+1)</code></pre>



<p class="wp-block-paragraph">たとえば log C(200, 100) を計算してみましょう。</p>



<pre class="wp-block-code"><code>=GAMMALN.PRECISE(201) - 2*GAMMALN.PRECISE(101)</code></pre>



<p class="wp-block-paragraph">結果は約135.75です。200個から100個を選ぶ組み合わせ数の自然対数ですね。元の組み合わせ数に戻すなら、EXP関数（e^xを返す関数）でくるみます。</p>



<pre class="wp-block-code"><code>=EXP(GAMMALN.PRECISE(201) - 2*GAMMALN.PRECISE(101))</code></pre>



<p class="wp-block-paragraph">結果は約 9.05 × 10^58 です。直接 <code>=COMBIN(200,100)</code> でも計算できますが、n=1000など大きな値では<code>#NUM!</code>エラーになります。GAMMALN.PRECISE関数なら対数のまま扱えるので限界がありませんよ。</p>



<h3 class="wp-block-heading"><span id="toc13">活用例2: 対数尤度の反復計算で精度を担保する</span></h3>



<p class="wp-block-paragraph">最尤推定（観測データから最も尤もらしいパラメータを推定する手法）では、対数尤度を最大化するパラメータを反復計算で探します。この<strong>反復計算で誤差が累積する場面こそ、GAMMALN.PRECISE関数の出番</strong>ですよ。</p>



<p class="wp-block-paragraph">ポアソン分布の対数尤度は、次の数式で表されます。</p>



<pre class="wp-block-code"><code>log L(λ) = Σ [k × log(λ) - λ - log(k!)]</code></pre>



<p class="wp-block-paragraph">ここで<code>log(k!)</code>の部分をGAMMALN.PRECISE関数で計算します。<code>log(k!) = GAMMALN.PRECISE(k+1)</code>という関係を使うんですね。</p>



<p class="wp-block-paragraph">A列に観測データ（k=2, 3, 1, 4, 2）が入っていて、λ=2.4と仮定したとします。各データの対数尤度寄与は次のように計算できますよ。</p>



<pre class="wp-block-code"><code>=A2*LN(2.4) - 2.4 - GAMMALN.PRECISE(A2+1)</code></pre>



<p class="wp-block-paragraph">これを全データにSUM関数で合計すれば、log L(2.4) が求まります。最尤推定では、このlog Lを最大化するλをソルバー機能などで探していきます。反復で何度も計算するので、各ステップの精度差が累積します。GAMMALN.PRECISE版を使うと、誤差累積を抑えられて安心ですよ。</p>



<h3 class="wp-block-heading"><span id="toc14">活用例3: ベイズ統計の正規化定数</span></h3>



<p class="wp-block-paragraph">ベイズ統計の事後分布には、ベータ関数 B(a, b) = Γ(a)Γ(b) / Γ(a+b) が登場します。「正規化定数」とは事後分布を確率密度に正規化するための係数で、対数で扱うのが定番です。</p>



<pre class="wp-block-code"><code>log B(a, b) = GAMMALN.PRECISE(a) + GAMMALN.PRECISE(b) - GAMMALN.PRECISE(a+b)</code></pre>



<p class="wp-block-paragraph">コイントスのベイズ更新でBeta(10, 5)分布を扱うとき、正規化定数の対数は次のように計算しますよ。</p>



<pre class="wp-block-code"><code>=GAMMALN.PRECISE(10) + GAMMALN.PRECISE(5) - GAMMALN.PRECISE(15)</code></pre>



<p class="wp-block-paragraph">結果は約-9.21です。確率密度関数の計算では、この対数値を使って指数和を取るパターンが多いですよね。MCMC（マルコフ連鎖モンテカルロ法：確率分布からのサンプリング手法）のような反復計算では、PRECISE版で精度を担保しておくと安心ですよ。</p>



<h2 class="wp-block-heading"><span id="toc15">EXP関数で元の値に戻す方法と注意点</span></h2>



<p class="wp-block-paragraph">GAMMALN.PRECISE関数の結果を「元のガンマ関数の値」に戻したいときは、<a href="https://mashukabu.com/excel-function-howto-use-exp/">EXP関数</a>と組み合わせます。</p>



<pre class="wp-block-code"><code>=EXP(GAMMALN.PRECISE(x))</code></pre>



<p class="wp-block-paragraph">これでGAMMA(x)と同じ値が得られます。たとえば<code>=EXP(GAMMALN.PRECISE(5))</code>は24（=4!）を返しますよ。</p>



<h3 class="wp-block-heading"><span id="toc16">大きな階乗を計算する際のオーバーフロー注意</span></h3>



<p class="wp-block-paragraph">ExcelのFACT関数（階乗を求める関数）には限界があります。Excelが扱える最大数値は約 1.79 × 10^308 で、170!がギリギリの上限です。171!以上は<code>#NUM!</code>エラーになってしまいます。</p>



<p class="wp-block-paragraph">そこでGAMMALN.PRECISE関数の出番ですが、<strong>EXP関数で戻すときも限界があります</strong>。</p>



<pre class="wp-block-code"><code>=FACT(171)              → #NUM! エラー（直接の階乗は計算不可）
=GAMMALN.PRECISE(172)   → 約711.715（log(171!)の値）
=EXP(GAMMALN.PRECISE(172)) → #NUM! エラー（EXP(711)はオーバーフロー）</code></pre>



<p class="wp-block-paragraph">EXP関数自体が約709を超える値で<code>#NUM!</code>エラーになります。対数値が709超なら元に戻せません。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>大きな階乗の比率（n!/m! のような形）は安全に計算できます。<code>GAMMALN.PRECISE(n+1) - GAMMALN.PRECISE(m+1)</code> を計算してからEXP関数で戻す方法を使いましょう。差分を取れば値が小さくなるので、指数化してもオーバーフローしにくくなりますよ。</p></blockquote>



<p class="wp-block-paragraph">たとえば 100!/50! を計算してみましょう。</p>



<pre class="wp-block-code"><code>=EXP(GAMMALN.PRECISE(101) - GAMMALN.PRECISE(51))</code></pre>



<p class="wp-block-paragraph">結果は約 3.07 × 10^93 です。差分を取ってからEXPに渡すほうが、安全で簡潔ですね。</p>



<h2 class="wp-block-heading"><span id="toc17">よくあるエラーと対処法</span></h2>



<p class="wp-block-paragraph">GAMMALN.PRECISE関数で遭遇しやすいエラーを整理しますね。</p>



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>#NUM!</td><td>xに0以下の値を指定した</td><td>xに正の数値を指定する</td></tr><tr><td>#VALUE!</td><td>引数に文字列が入っている</td><td>セル参照先が数値かどうか確認する</td></tr><tr><td>#NAME?</td><td>関数名のスペルミス、またはExcel 2007以前で使用</td><td>スペル確認、またはGAMMALN関数で代替</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc18">#NUM! エラー</span></h3>



<p class="wp-block-paragraph">xに0または負の数を指定すると発生します。ガンマ関数の自然対数は正の実数で定義されているので、0以下の値は受け付けません。</p>



<pre class="wp-block-code"><code>=GAMMALN.PRECISE(0)   → #NUM!
=GAMMALN.PRECISE(-2)  → #NUM!</code></pre>



<p class="wp-block-paragraph">xに正の数を指定するのが対処法です。データに負の値が混じる可能性があるなら、IF関数やIFERROR関数で事前にチェックしましょう。</p>



<pre class="wp-block-code"><code>=IF(A2&gt;0, GAMMALN.PRECISE(A2), &quot;xは正の値にしてください&quot;)</code></pre>



<h3 class="wp-block-heading"><span id="toc19">#VALUE! エラー</span></h3>



<p class="wp-block-paragraph">xに数値以外（文字列など）を指定すると発生します。セル参照先が空白や文字列になっていないか確認してくださいね。</p>



<pre class="wp-block-code"><code>=GAMMALN.PRECISE(&quot;apple&quot;)  → #VALUE!</code></pre>



<h3 class="wp-block-heading"><span id="toc20">#NAME? エラー（Excel 2007以前との互換性）</span></h3>



<p class="wp-block-paragraph">GAMMALN.PRECISE関数はExcel 2010以降で導入されました。<strong>Excel 2007以前で使うと<code>#NAME?</code>エラーになります</strong>。</p>



<pre class="wp-block-code"><code>=GAMMALN.PRECISE(5)  → #NAME?（Excel 2007以前）</code></pre>



<p class="wp-block-paragraph">古い環境との互換性が必要なら、互換版の<a href="https://mashukabu.com/excel-gammaln-function/">GAMMALN関数</a>を使ってください。</p>



<p class="wp-block-paragraph">関数名の入力ミスでも<code>#NAME?</code>が出ます。「GAMMALN.PRECISE」は名前が長く、ドット（.）を忘れやすいので注意してくださいね。</p>



<pre class="wp-block-code"><code>=GAMMALNPRECISE(5)  → #NAME?（ドット忘れ）</code></pre>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>Excel 2010以降では、関数の挿入ダイアログで「GAMMALN」と入力するとGAMMALN.PRECISEも候補に表示されます。サジェストから選ぶとスペルミスを防げますよ。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc21">まとめ：GAMMALN.PRECISEで高精度な統計計算を</span></h2>



<p class="wp-block-paragraph">ExcelのGAMMALN.PRECISE関数は、ガンマ関数Γ(x)の自然対数を高精度に返す関数です。一見地味な関数ですが、統計計算の足回りを支える重要な関数なんですよ。</p>



<p class="wp-block-paragraph">ポイントを整理しますね。</p>



<ul class="wp-block-list"><li>構文は<code>=GAMMALN.PRECISE(x)</code>の1引数だけ。xは正の実数のみ受け付ける</li><li><a href="https://mashukabu.com/excel-gammaln-function/">GAMMALN関数</a>の高精度版として、Excel 2010で追加された</li><li>「.PRECISE」はExcel 2010の精度改善関数群（FLOOR.PRECISE、CEILING.PRECISE 等）の一員</li><li>Microsoftが下位互換性のために「旧関数は残し新名で改良版を追加」した結果生まれた</li><li>現行Excel環境では両関数の精度差は実用上ほぼゼロ</li><li>大きな組み合わせ計算は <code>=EXP(GAMMALN.PRECISE(n+1) - GAMMALN.PRECISE(r+1) - GAMMALN.PRECISE(n-r+1))</code> で安全に</li><li>対数尤度の反復計算やベイズ正規化定数で精度を担保したいときに選ぶ</li><li>EXP関数で戻すときは対数値が709超なら#NUM!になる点に注意</li></ul>



<p class="wp-block-paragraph">ガンマ関数の自然対数を使う場面は、対数尤度・組合せ計算・ベイズ統計などさまざまです。Excel 2010以降の環境なら、新規プロジェクトはGAMMALN.PRECISE関数で統一しておくと無難ですよ。</p>



<p class="wp-block-paragraph">ガンマ分布の確率を直接計算したい場合は、<a href="https://mashukabu.com/excel-gamma-dist-function/">ExcelのGAMMA.DIST関数の使い方</a>を参考にしてください。確率からx値を逆算したい場合は、<a href="https://mashukabu.com/excel-gamma-inv-function/">ExcelのGAMMA.INV関数の使い方</a>が役立ちますよ。</p>



<p class="wp-block-paragraph">GAMMALN.PRECISE関数を覚えておくと、「精度を担保したい」「大きな数値を安全に扱いたい」と困ったときの強力な武器になります。ぜひ実務でも活用してみてくださいね。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/gammaln-precise/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのIMLN関数の使い方｜複素数の自然対数を一発で計算</title>
		<link>https://mashukabu.com/spreadsheet-imln-function/</link>
					<comments>https://mashukabu.com/spreadsheet-imln-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Tue, 28 Apr 2026 14:24:06 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[IMLN]]></category>
		<category><![CDATA[エンジニアリング関数]]></category>
		<category><![CDATA[スプレッドシート]]></category>
		<category><![CDATA[自然対数]]></category>
		<category><![CDATA[複素数]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=6274</guid>

					<description><![CDATA[GoogleスプレッドシートのIMLN関数の使い方を解説。複素数（a+bi）の自然対数を一発で求める基本構文、IMEXP関数との逆関数関係、主値の範囲（-π〜π）、COMPLEX関数との連携、フェーザ表現の振幅・位相分解や信号解析での実務活用例、よくあるエラー対処法まで実例付きで紹介します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「スプレッドシートで複素数の自然対数を出したいけど、振幅と位相に分けて手計算するのが面倒&#8230;」</p>



<p class="wp-block-paragraph">スプレッドシートで複素数を扱っていると、ln(a+bi)の値が必要になる場面がありますよね。IMABSやIMARGUMENTをLNと組み合わせ、最後にCOMPLEXで合体させて&#8230;と数式を何段にも重ねるのは結構大変です。</p>



<p class="wp-block-paragraph">そんなときに頼りになるのがGoogleスプレッドシートのIMLN関数です。複素数を1つ渡すだけで「その複素数の自然対数」を一発で返してくれます。フェーザ分解や周波数応答の数式が一気にすっきりしますよ。</p>



<p class="wp-block-paragraph">ExcelのIMLN関数と完全互換なので、Excelファイルとやり取りする現場でも安心ですね。COMPLEX関数で作った複素数や、<a href="https://mashukabu.com/spreadsheet-imexp-function/">IMEXP関数</a>で計算した指数関数値からも、そのまま自然対数に渡せます。</p>



<p class="wp-block-paragraph">この記事では、スプレッドシートのIMLN関数の基本構文と実務での活用例を解説します。IMEXPとの逆関数関係や、主値の範囲、よくあるエラーと対処法もしっかり紹介していきますよ。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-3" checked><label class="toc-title" for="toc-checkbox-3">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">スプレッドシートのIMLN関数とは？</a></li><li><a href="#toc2" tabindex="0">IMLN関数の書き方（構文と引数）</a><ol><li><a href="#toc3" tabindex="0">基本構文</a></li><li><a href="#toc4" tabindex="0">引数の詳細</a></li></ol></li><li><a href="#toc5" tabindex="0">IMLN関数の基本的な使い方</a><ol><li><a href="#toc6" tabindex="0">文字列で複素数を直接指定する</a></li><li><a href="#toc7" tabindex="0">オイラーの等式の逆を確認する</a></li><li><a href="#toc8" tabindex="0">セル参照で複素数を指定する</a></li><li><a href="#toc9" tabindex="0">COMPLEX関数と組み合わせる</a></li><li><a href="#toc10" tabindex="0">ARRAYFORMULAで複数行を一括処理する</a></li></ol></li><li><a href="#toc11" tabindex="0">IMLN関数の実務活用例</a><ol><li><a href="#toc12" tabindex="0">活用例1: 振幅と位相に分解する</a></li><li><a href="#toc13" tabindex="0">活用例2: 伝達関数のゲイン・位相を求める</a></li><li><a href="#toc14" tabindex="0">活用例3: IMEXPの逆変換として使う</a></li><li><a href="#toc15" tabindex="0">活用例4: 複素数のべき乗を分解する</a></li><li><a href="#toc16" tabindex="0">活用例5: 信号の包絡線抽出（ヒルベルト変換の後処理）</a></li></ol></li><li><a href="#toc17" tabindex="0">IMLN関数とCOMPLEX関数群の関係</a></li><li><a href="#toc18" tabindex="0">IMLN関数のよくあるエラーと対処法</a><ol><li><a href="#toc19" tabindex="0">#NUM! エラー（複素数の形式エラー、または z=0）</a></li><li><a href="#toc20" tabindex="0">#VALUE! エラー（引数の型エラー）</a></li><li><a href="#toc21" tabindex="0">主値の範囲を超えた角度を期待してしまう問題</a></li><li><a href="#toc22" tabindex="0">IFERRORでまとめてエラーを吸収する</a></li></ol></li><li><a href="#toc23" tabindex="0">IMLN関数とExcelの互換性</a></li><li><a href="#toc24" tabindex="0">複素数関連の関数一覧</a></li><li><a href="#toc25" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">スプレッドシートのIMLN関数とは？</span></h2>



<p class="wp-block-paragraph">GoogleスプレッドシートのIMLN関数は、複素数の自然対数（底eの対数 ln(z)）を返す関数です。エンジニアリング関数（電気・物理・工学系の計算で使う関数群）のひとつに分類されますよ。</p>



<p class="wp-block-paragraph">読み方は「イマジナリー・エルエヌ」または「アイエム・エルエヌ」です。英語の「imaginary（虚数の）」と「natural logarithm（自然対数）」を組み合わせた名前ですね。複素数「a+bi」の自然対数を、複素数として返してくれるのが役割です。</p>



<p class="wp-block-paragraph">そもそも複素数の自然対数は、極形式の考え方から導かれます。複素数 z を |z|×e^(iθ) の形に書き直すと、定義式は次のようになりますよ。</p>



<pre class="wp-block-code"><code>ln(a+bi) = ln(|a+bi|) + i × arg(a+bi)
        = ln(√(a²+b²)) + i × atan2(b, a)</code></pre>



<p class="wp-block-paragraph">実部は「絶対値の自然対数」、虚部は「偏角（位相角）」となり、結果も複素数で返るのが特徴ですね。虚部の偏角はラジアンで、主値の範囲は -π < θ ≤ π に収まります。</p>



<figure class="wp-block-table"><table><thead><tr><th>複素数（z）</th><th>IMLN(z)の結果</th><th>内部計算</th></tr></thead><tbody><tr><td>1+0i</td><td>0</td><td>ln(1) = 0</td></tr><tr><td>e+0i（≈2.71828）</td><td>1</td><td>ln(e) = 1</td></tr><tr><td>-1+0i</td><td>0+πi</td><td>ln(1) + i×π（オイラーの等式の逆）</td></tr><tr><td>0+1i</td><td>0+(π/2)i</td><td>ln(1) + i×π/2</td></tr><tr><td>0-1i</td><td>0-(π/2)i</td><td>ln(1) &#8211; i×π/2</td></tr><tr><td>1+1i</td><td>0.3466+0.7854i</td><td>ln(√2) + i×π/4</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">IMLN関数を使えば、この表の右側にある「複素数の自然対数」をサクッと取り出せます。Excelとの互換性も完璧で、Excel 2007以降のすべてのバージョンに対応していますよ。</p>



<p class="wp-block-paragraph">複素数の自然対数は、フェーザ分解・伝達関数のボード線図・安定性解析・信号処理のキャリア除去などで活躍します。複素数を「対数空間」で扱う場面で欠かせない基礎パーツですね。</p>



<h2 class="wp-block-heading"><span id="toc2">IMLN関数の書き方（構文と引数）</span></h2>



<h3 class="wp-block-heading"><span id="toc3">基本構文</span></h3>



<pre class="wp-block-code"><code>=IMLN(複素数)</code></pre>



<p class="wp-block-paragraph">引数は1つで、自然対数を取りたい複素数を渡す形ですよ。</p>



<h3 class="wp-block-heading"><span id="toc4">引数の詳細</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/任意</th><th>説明</th></tr></thead><tbody><tr><td>複素数（inumber）</td><td>必須</td><td>自然対数を計算する複素数。文字列またはセル参照で指定する</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">引数には「&#8221;1+2i&#8221;」や「&#8221;1+2j&#8221;」のような複素数文字列を直接渡せます。COMPLEX関数（実数と虚数から複素数を作成する関数）の結果や、複素数が入ったセルの参照も指定できますよ。</p>



<p class="wp-block-paragraph">虚数単位は小文字の「i」または「j」のどちらでも受け付けます。数学では「i」、電気工学では「j」が使われる慣習ですね。IMLN関数はどちらでも同じように動作してくれます。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>IMLNが返す虚部（偏角）の範囲は -π < θ ≤ π です。これを「主値」と呼びます。実際の偏角は2πの整数倍だけ無数にありますが、スプレッドシートではこの主値だけが返ってくる点を覚えておきましょう。</p></blockquote>



<p class="wp-block-paragraph">引数に正の実数だけを渡せば、通常の自然対数LNと同じ結果になります。「IMLN(&#8220;2.71828&#8221;)」も「LN(2.71828)」もどちらも約1ですね。違いは戻り値が複素数文字列になるか実数になるかだけですよ。</p>



<h2 class="wp-block-heading"><span id="toc5">IMLN関数の基本的な使い方</span></h2>



<h3 class="wp-block-heading"><span id="toc6">文字列で複素数を直接指定する</span></h3>



<p class="wp-block-paragraph">複素数文字列をそのまま引数に渡してみましょう。</p>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/03/spreadsheet-sumif-function_01_data_sample-table.png" alt="01 data sample table" /></figure>



<pre class="wp-block-code"><code>=IMLN(&quot;1+1i&quot;)</code></pre>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/06/02_formula_imln-basic.png" alt="02 formula imln basic" /></figure>



<p class="wp-block-paragraph">結果は「0.346573590279973+0.785398163397448i」になります。実部はln(√2)≈0.3466、虚部はπ/4≈0.7854ですね。</p>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/06/03_result_imln-basic.png" alt="03 result imln basic" /></figure>



<p class="wp-block-paragraph">正の実部だけの複素数を渡すと、通常のLN関数と同じ結果になります。</p>



<pre class="wp-block-code"><code>=IMLN(&quot;2.71828&quot;)
=IMLN(&quot;2.71828+0i&quot;)</code></pre>



<p class="wp-block-paragraph">どちらも結果は約「1+0i」、つまり自然対数の底eの対数ですよ。実数の世界の自然対数と一致しますね。</p>



<p class="wp-block-paragraph">純虚数を渡すと、結果は実部0で虚部が±π/2になります。</p>



<pre class="wp-block-code"><code>=IMLN(&quot;0+1i&quot;)
=IMLN(&quot;0-1i&quot;)</code></pre>



<p class="wp-block-paragraph">前者は「0+1.5708&#8230;i」、後者は「0-1.5708&#8230;i」になりますよ。複素平面の縦軸に乗っている純虚数の偏角が、±π/2として返ってきますね。</p>



<h3 class="wp-block-heading"><span id="toc7">オイラーの等式の逆を確認する</span></h3>



<p class="wp-block-paragraph">「e^(iπ) = -1」というオイラーの等式は有名ですよね。両辺の自然対数を取ると「ln(-1) = iπ」になります。スプレッドシートで確認してみましょう。</p>



<pre class="wp-block-code"><code>=IMLN(&quot;-1&quot;)</code></pre>



<p class="wp-block-paragraph">結果は「0+3.14159&#8230;i」になりますよ。実部は0、虚部はπとなり、ln(-1) = iπ が確かに成り立っていますね。実数の世界では「負の数の対数は計算できない」とされますが、複素数まで広げるとちゃんと値が定まる点が面白いところです。</p>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/06/04_result_imln-euler.png" alt="04 result imln euler" /></figure>



<h3 class="wp-block-heading"><span id="toc8">セル参照で複素数を指定する</span></h3>



<p class="wp-block-paragraph">実務ではセルに入った複素数を扱う場面が多いですよね。A2に「1+1i」が入っている場合は次のように書きます。</p>



<pre class="wp-block-code"><code>=IMLN(A2)</code></pre>



<p class="wp-block-paragraph">結果は「0.3466&#8230;+0.7854&#8230;i」になります。セル参照を渡すだけで、入っている複素数の自然対数を取り出せますよ。</p>



<h3 class="wp-block-heading"><span id="toc9">COMPLEX関数と組み合わせる</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-complex-function/">COMPLEX関数</a>で作った複素数を、その場でIMLNに渡すこともできます。</p>



<pre class="wp-block-code"><code>=IMLN(COMPLEX(1, 1))</code></pre>



<p class="wp-block-paragraph">結果は「0.3466&#8230;+0.7854&#8230;i」、つまり「IMLN(&#8220;1+1i&#8221;)」と同じですね。COMPLEX(1, 1)が内部で「1+1i」を作り、IMLN関数がその自然対数を返してくれます。</p>



<p class="wp-block-paragraph">数値で実部と虚部を渡したいときに便利な書き方ですよ。</p>



<h3 class="wp-block-heading"><span id="toc10">ARRAYFORMULAで複数行を一括処理する</span></h3>



<p class="wp-block-paragraph">複素数のリストに対して一気に自然対数の列を作りたい場面もありますよね。そんなときはARRAYFORMULA関数（数式を範囲全体に展開する関数）と組み合わせます。</p>



<pre class="wp-block-code"><code>=ARRAYFORMULA(IMLN(A2:A10))</code></pre>



<p class="wp-block-paragraph">A列の複素数を順番に自然対数に変換して、対応する結果をB列に一発で展開できますよ。フェーザ表現の振幅・位相分解を一括計算するときに重宝しますね。</p>



<h2 class="wp-block-heading"><span id="toc11">IMLN関数の実務活用例</span></h2>



<h3 class="wp-block-heading"><span id="toc12">活用例1: 振幅と位相に分解する</span></h3>



<p class="wp-block-paragraph">IMLN関数の戻り値は「実部=ln(振幅)、虚部=位相角」という構造になっています。これを使うと、複素数を一発で振幅と位相に分けられますよ。</p>



<p class="wp-block-paragraph">A列に複素数フェーザが並んでいるとしましょう。</p>



<pre class="wp-block-code"><code>B2: =IMLN(A2)              ← 自然対数
C2: =EXP(IMREAL(B2))       ← 振幅 |z|
D2: =IMAGINARY(B2)         ← 位相（ラジアン）
E2: =DEGREES(D2)           ← 位相（度数）</code></pre>



<p class="wp-block-paragraph">C列に振幅、D列にラジアン位相、E列に度数位相が並びますね。IMABSとIMARGUMENTを別々に呼ぶよりも、IMLN1本で済むのでシートがすっきりします。</p>



<h3 class="wp-block-heading"><span id="toc13">活用例2: 伝達関数のゲイン・位相を求める</span></h3>



<p class="wp-block-paragraph">制御工学では、伝達関数 H(jω) を複素数として評価し、ゲイン（dB）と位相（度数）を取り出します。IMLNを使うと、片対数のボード線図用データが直接組み立てられますよ。</p>



<p class="wp-block-paragraph">H(jω)が「2+3i」と評価されたとしましょう。</p>



<pre class="wp-block-code"><code>A2: 2                                ← 実部
B2: 3                                ← 虚部
C2: =COMPLEX(A2, B2)                 ← H(jω)
D2: =IMLN(C2)                        ← 自然対数
E2: =20/LN(10)*IMREAL(D2)            ← ゲイン（dB）
F2: =DEGREES(IMAGINARY(D2))          ← 位相（度数）</code></pre>



<p class="wp-block-paragraph">E2のゲインは「20×log10(|H|)」を「20/ln(10)×ln(|H|)」に書き換えた形ですね。F2は位相の度数表記です。ボード線図の作成やフィルタ設計のシートで使えるパターンですよ。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>ゲインを dB に換算するには「20/LN(10)」をかけるのが手早い書き方です。LOG10関数を使う場合は <code>=20*LOG10(IMABS(C2))</code> でも同じ結果になりますよ。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc14">活用例3: IMEXPの逆変換として使う</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-imexp-function/">IMEXP関数</a>とIMLN関数は互いに逆関数の関係です。IMEXPで作った複素数をIMLNに通すと、元の複素数（厳密には主値の範囲）に戻りますよ。</p>



<pre class="wp-block-code"><code>A2: =COMPLEX(1, 1)               ← 元の複素数 1+1i
B2: =IMEXP(A2)                   ← e^(1+1i) = 1.4687+2.2874i
C2: =IMLN(B2)                    ← 元に戻る = 1+1i</code></pre>



<p class="wp-block-paragraph">C2の結果は「1+1i」と元のA2に一致します。フェーザ計算で「指数表現と対数表現を行き来したい」場面で使える書き方ですね。エネルギー計算や減衰係数の解析で重宝します。</p>



<h3 class="wp-block-heading"><span id="toc15">活用例4: 複素数のべき乗を分解する</span></h3>



<p class="wp-block-paragraph">IMLN関数は、複素数の一般べき乗 z^w を計算する基礎パーツとしても使えます。定義式は z^w = e^(w × ln(z)) なので、IMLNとIMEXPを組み合わせれば実装できますよ。</p>



<p class="wp-block-paragraph">たとえば「(1+i)^(2+i)」を計算してみましょう。</p>



<pre class="wp-block-code"><code>A2: =COMPLEX(1, 1)                              ← z = 1+i
B2: =COMPLEX(2, 1)                              ← w = 2+i
C2: =IMEXP(IMPRODUCT(B2, IMLN(A2)))             ← z^w</code></pre>



<p class="wp-block-paragraph">C2の結果は「-0.3097+0.8576i」のような値になります。IMPOWER関数（複素数のべき乗）の指数部に複素数を渡したいときの代替実装ですね。整数や実数のべき乗ならIMPOWERで足りますが、複素べき乗にはIMLN+IMEXPの組み合わせが必要です。</p>



<h3 class="wp-block-heading"><span id="toc16">活用例5: 信号の包絡線抽出（ヒルベルト変換の後処理）</span></h3>



<p class="wp-block-paragraph">信号処理では、解析信号 z(t) = x(t) + i×ĥ(t) から瞬時振幅と瞬時位相を取り出す場面があります。IMLNを使うと、両方を一発で取り出せますよ。</p>



<p class="wp-block-paragraph">A列にサンプル時刻、B列に解析信号（複素数）が並んでいるとしましょう。</p>



<pre class="wp-block-code"><code>C2: =IMLN(B2)              ← 自然対数
D2: =EXP(IMREAL(C2))       ← 包絡線（瞬時振幅）
E2: =IMAGINARY(C2)         ← 瞬時位相（ラジアン）</code></pre>



<p class="wp-block-paragraph">D列が包絡線、E列が瞬時位相ですね。位相の不連続を避けたい場合は、後段でアンラップ処理（連続化）を入れておくと安心です。AM/FM信号の解析やバイブレーション診断のシートでそのまま使える書き方ですよ。</p>



<h2 class="wp-block-heading"><span id="toc17">IMLN関数とCOMPLEX関数群の関係</span></h2>



<p class="wp-block-paragraph">複素数を扱う関数群の中で、IMLN関数の位置づけを整理しておきましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>入力</th><th>出力</th><th>役割</th></tr></thead><tbody><tr><td><a href="https://mashukabu.com/spreadsheet-complex-function/">COMPLEX</a></td><td>実数 a, b</td><td>複素数 a+bi</td><td>複素数を作る</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imreal-function/">IMREAL</a></td><td>複素数 a+bi</td><td>実数 a</td><td>実部を取り出す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imaginary-function/">IMAGINARY</a></td><td>複素数 a+bi</td><td>実数 b</td><td>虚部を取り出す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imabs-function/">IMABS</a></td><td>複素数 a+bi</td><td>実数 √(a²+b²)</td><td>大きさを取り出す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imargument-function/">IMARGUMENT</a></td><td>複素数 a+bi</td><td>実数（ラジアン）</td><td>偏角を取り出す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imexp-function/">IMEXP</a></td><td>複素数 z</td><td>複素数 e^z</td><td>指数関数</td></tr><tr><td>IMLN</td><td>複素数 z</td><td>複素数 ln(z)</td><td>自然対数（IMEXPの逆関数）</td></tr><tr><td>IMLOG2</td><td>複素数 z</td><td>複素数 log₂(z)</td><td>2を底とする対数</td></tr><tr><td>IMLOG10</td><td>複素数 z</td><td>複素数 log₁₀(z)</td><td>10を底とする対数</td></tr><tr><td>IMPOWER</td><td>複素数 z, 実数 n</td><td>複素数 z^n</td><td>べき乗</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">IMLN関数とIMEXP関数は互いに逆関数の関係です。「IMLN(IMEXP(z)) = z」が成り立ちますよ（厳密には主値の範囲で）。逆に「IMEXP(IMLN(z)) = z」も常に成り立ちます。</p>



<p class="wp-block-paragraph">たとえば定義式どおりにln(a+bi)を手動で組み立てると次のようになります。</p>



<pre class="wp-block-code"><code>=COMPLEX(LN(SQRT(IMREAL(A2)^2+IMAGINARY(A2)^2)), ATAN2(IMREAL(A2), IMAGINARY(A2)))</code></pre>



<p class="wp-block-paragraph">これはIMLNと同じ結果になりますが、絶対値と偏角を毎回手書きする必要がありますよね。IMLNを使えば1関数で済むので、数式が読みやすくなります。</p>



<h2 class="wp-block-heading"><span id="toc18">IMLN関数のよくあるエラーと対処法</span></h2>



<h3 class="wp-block-heading"><span id="toc19">#NUM! エラー（複素数の形式エラー、または z=0）</span></h3>



<p class="wp-block-paragraph">複素数として認識できない文字列を渡したときや、ゼロを渡したときに発生します。</p>



<pre class="wp-block-code"><code>=IMLN(&quot;1+1I&quot;)     → #NUM!（大文字のIは不可）
=IMLN(&quot;1+1k&quot;)     → #NUM!（i・j以外は不可）
=IMLN(&quot;1 + 1i&quot;)   → #NUM!（途中の空白は不可）
=IMLN(&quot;0&quot;)        → #NUM!（ln(0)は定義されない）
=IMLN(&quot;0+0i&quot;)     → #NUM!（同上）</code></pre>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/06/05_error_num.png" alt="05 error num" /></figure>



<p class="wp-block-paragraph">対処法は2つあります。1つ目は、複素数文字列を必ず半角の「a+bi」または「a+bj」の形式にすることです。虚数単位は小文字限定なので、CapsLockがオンになっていないか確認してくださいね。</p>



<p class="wp-block-paragraph">2つ目は、ゼロを渡さないことです。実数の世界でln(0)が定義されないのと同じく、複素数の世界でも0の対数は計算できません。入力データに0が混じる可能性がある場合は、後述のIFERROR対策を入れておきましょう。</p>



<h3 class="wp-block-heading"><span id="toc20">#VALUE! エラー（引数の型エラー）</span></h3>



<p class="wp-block-paragraph">引数に論理値やエラー値を渡したときに発生します。</p>



<pre class="wp-block-code"><code>=IMLN(TRUE)       → #VALUE!（論理値は不可）
=IMLN(#N/A)       → #VALUE!（エラー値は不可）</code></pre>



<p class="wp-block-paragraph">対処法は、正しい複素数文字列または数値・セル参照を渡すことです。入力元のセルがエラーになっている場合は、そのエラーを先に解消する必要がありますよ。</p>



<h3 class="wp-block-heading"><span id="toc21">主値の範囲を超えた角度を期待してしまう問題</span></h3>



<p class="wp-block-paragraph">IMLNが返す虚部（偏角）は -π < θ ≤ π の主値だけです。たとえば「3π/2 ラジアン回転した複素数」を期待しても、実際には「-π/2」が返ってきますね。</p>



<pre class="wp-block-code"><code>=IMLN(&quot;0-1i&quot;)     → 0-1.5708i（-π/2）</code></pre>



<p class="wp-block-paragraph">この複素数 -i は「3π/2 回転した点」とも「-π/2 回転した点」とも見なせますね。IMLNはそのうち主値（後者）を返します。連続的に偏角を追跡したい信号処理などでは、後段で「アンラップ処理」を実装する必要がある点に注意してくださいね。</p>



<h3 class="wp-block-heading"><span id="toc22">IFERRORでまとめてエラーを吸収する</span></h3>



<p class="wp-block-paragraph">入力データの信頼性が低い場合や、ゼロが混じる可能性がある場合に備えておきたいですよね。そんなときはIFERROR関数（エラー時に代替値を返す関数）で包んでおきましょう。シート全体の集計が止まらず安心です。</p>



<pre class="wp-block-code"><code>=IFERROR(IMLN(A2), &quot;計算不可&quot;)</code></pre>



<p class="wp-block-paragraph">エラー時にメッセージを返すようにしておけば、安心して大量データに適用できますよ。</p>



<h2 class="wp-block-heading"><span id="toc23">IMLN関数とExcelの互換性</span></h2>



<p class="wp-block-paragraph">GoogleスプレッドシートのIMLN関数は、ExcelのIMLN関数と仕様が完全に一致しています。構文・引数・戻り値の形式・主値の範囲・エラー条件まで同じですよ。</p>



<p class="wp-block-paragraph">ExcelファイルをGoogleスプレッドシートで開いてもIMLN関数はそのまま動作します。逆にスプレッドシートで作った数式をExcelで開いても問題ありませんね。</p>



<p class="wp-block-paragraph">ExcelのIMLN関数は、Excel 2007以降のすべてのバージョンで利用できます。Microsoft 365、Excel for Mac、Excel Online でも同じように使えますよ。古いExcelファイルとの互換性も心配いりません。</p>



<h2 class="wp-block-heading"><span id="toc24">複素数関連の関数一覧</span></h2>



<p class="wp-block-paragraph">IMLN関数と一緒に使うことが多い、複素数関連の関数をまとめました。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数名</th><th>機能</th></tr></thead><tbody><tr><td><a href="https://mashukabu.com/spreadsheet-complex-function/">COMPLEX</a></td><td>実数と虚数から複素数を作成する</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imreal-function/">IMREAL</a></td><td>複素数の実数係数を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imaginary-function/">IMAGINARY</a></td><td>複素数の虚数係数を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imabs-function/">IMABS</a></td><td>複素数の絶対値（大きさ）を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imargument-function/">IMARGUMENT</a></td><td>複素数の偏角（角度）をラジアンで返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imconjugate-function/">IMCONJUGATE</a></td><td>共役複素数を返す</td></tr><tr><td>IMSUM</td><td>複素数の合計（足し算）を返す</td></tr><tr><td>IMSUB</td><td>複素数の差（引き算）を返す</td></tr><tr><td>IMPRODUCT</td><td>複素数の積（掛け算）を返す</td></tr><tr><td>IMDIV</td><td>複素数の商（割り算）を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imexp-function/">IMEXP</a></td><td>複素数の指数関数（eべき乗）を返す</td></tr><tr><td>IMLN</td><td>複素数の自然対数を返す（IMEXPの逆関数）</td></tr><tr><td>IMLOG2</td><td>複素数の2を底とする対数を返す</td></tr><tr><td>IMLOG10</td><td>複素数の10を底とする対数を返す</td></tr><tr><td>IMPOWER</td><td>複素数のべき乗を返す</td></tr><tr><td>IMSQRT</td><td>複素数の平方根を返す</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">IMLN関数は、これら複素数関数群の中で「自然対数」を担う基本関数ですね。COMPLEXで複素数を作り、IMLNで自然対数値を求めるのが基本の流れです。最後はIMREAL・IMAGINARYで振幅と位相に分けて可視化しましょう。フェーザ分解やボード線図の解析シートを軽快に組み立てられますよ。</p>



<h2 class="wp-block-heading"><span id="toc25">まとめ</span></h2>



<p class="wp-block-paragraph">GoogleスプレッドシートのIMLN関数は、複素数の自然対数（ln(z)）を返す関数です。フェーザ分解・ボード線図・伝達関数解析・信号処理など、複素数を「振幅と位相」に分けて扱う場面で欠かせない関数ですよ。</p>



<ul class="wp-block-list"><li>構文は <code>=IMLN(複素数)</code> で複素数を1つ渡すだけ</li><li>「ln(a+bi) = ln(√(a²+b²)) + i × atan2(b, a)」が内部計算式</li><li>実部は絶対値の自然対数、虚部は偏角（位相角）になる</li><li>「a+bi」と「a+bj」のどちらの表記もそのまま受け付ける</li><li>虚部（偏角）の範囲は -π < θ ≤ π の主値</li><li>正の実部だけの複素数を渡すと通常のLN関数と同じ結果になる</li><li>「ln(-1) = iπ」のオイラーの等式の逆も計算できる</li><li>COMPLEX関数の結果やセル参照、複素数演算の結果も渡せる</li><li>ARRAYFORMULAで複数の複素数を一括処理できる</li><li>IMEXP関数とは互いに逆関数の関係</li><li>z=0 を渡すと #NUM! エラー（ln(0)は定義されない）</li><li>大文字の「I」「J」やi・j以外の単位は #NUM! エラー</li><li>論理値やエラー値を渡すと #VALUE! エラー</li><li>ExcelのIMLN関数と完全互換（Excel 2007以降）</li></ul>



<p class="wp-block-paragraph">複素数の自然対数が必要になったら、IMLN関数の出番ですよ。COMPLEX関数で複素数を作り、IMLNで対数を取りましょう。最後にIMREAL・IMAGINARYで振幅と位相に分解すれば、エンジニアリング系のシートを軽快に組み立てられますね。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-imln-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのGAMMALN関数の使い方｜ガンマ関数の自然対数</title>
		<link>https://mashukabu.com/spreadsheet-gammaln-function/</link>
					<comments>https://mashukabu.com/spreadsheet-gammaln-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Fri, 27 Mar 2026 23:39:12 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[GAMMALN]]></category>
		<category><![CDATA[オーバーフロー回避]]></category>
		<category><![CDATA[ガンマ関数]]></category>
		<category><![CDATA[スプレッドシート]]></category>
		<category><![CDATA[統計関数]]></category>
		<category><![CDATA[自然対数]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=5605</guid>

					<description><![CDATA[GoogleスプレッドシートのGAMMALN関数の使い方を初心者向けに解説。ガンマ関数の自然対数 ln(Γ(x)) で大きな数の階乗やCOMBIN計算のオーバーフローを回避する方法、GAMMALN.PRECISEとの違い、GAMMA・LN・EXP関数との使い分けまで紹介します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「大きな数値の階乗を計算しようとしたら、#NUM!エラーが出てしまった&#8230;」</p>



<p class="wp-block-paragraph">スプレッドシートで統計処理や確率計算をしていると、こんな場面に出くわすことがあります。<a href="https://mashukabu.com/spreadsheet-gamma-function/">GAMMA関数</a>は約172以上でオーバーフローします。<a href="https://mashukabu.com/spreadsheet-fact-function/">FACT関数</a>も170の階乗が限界です。</p>



<p class="wp-block-paragraph">そんなときに頼りになるのがGAMMALN関数です。ガンマ関数の自然対数を返すことで、桁数を大幅に圧縮してくれます。</p>



<p class="wp-block-paragraph">この記事では、GAMMALN関数の基本の書き方から実務での活用例、GAMMALN.PRECISEとの違いまで紹介します。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4" checked><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">スプレッドシートのGAMMALN関数とは？</a></li><li><a href="#toc2" tabindex="0">GAMMALN関数の書き方（構文と引数）</a><ol><li><a href="#toc3" tabindex="0">基本構文</a></li><li><a href="#toc4" tabindex="0">引数の説明</a></li></ol></li><li><a href="#toc5" tabindex="0">GAMMALN関数の基本的な使い方</a><ol><li><a href="#toc6" tabindex="0">小さな数値で動作を確認する</a></li><li><a href="#toc7" tabindex="0">大きな数値でオーバーフローを回避する</a></li><li><a href="#toc8" tabindex="0">セル参照を使う</a></li></ol></li><li><a href="#toc9" tabindex="0">GAMMALN関数の実践的な使い方・応用例</a><ol><li><a href="#toc10" tabindex="0">大きな数の組み合わせ（nCr）をGAMMALNで計算する</a></li><li><a href="#toc11" tabindex="0">対数尤度の計算に使う</a></li><li><a href="#toc12" tabindex="0">GAMMALNとEXPの組み合わせで元の値に戻す</a></li><li><a href="#toc13" tabindex="0">階乗の比を安全に計算する</a></li></ol></li><li><a href="#toc14" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc15" tabindex="0">0以下の値を指定したとき</a></li></ol></li><li><a href="#toc16" tabindex="0">GAMMALN.PRECISEとの違い</a></li><li><a href="#toc17" tabindex="0">GAMMA関数・LN関数との違い・使い分け</a><ol><li><a href="#toc18" tabindex="0">GAMMALNとGAMMAの関係</a></li><li><a href="#toc19" tabindex="0">GAMMALNとLNの組み合わせ</a></li></ol></li><li><a href="#toc20" tabindex="0">Excelとの違い</a></li><li><a href="#toc21" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">スプレッドシートのGAMMALN関数とは？</span></h2>



<p class="wp-block-paragraph">GAMMALN関数（読み方: ガンマ・エルエヌ関数）は、<strong>ガンマ関数の自然対数 ln(Γ(x)) を返す関数</strong>です。</p>



<p class="wp-block-paragraph">「GAMMA」はガンマ関数、「LN」は自然対数（Natural Logarithm）の略です。<a href="https://mashukabu.com/spreadsheet-gamma-function/">GAMMA関数</a>の結果に<a href="https://mashukabu.com/spreadsheet-ln-function/">LN関数</a>をかけた値と同じ意味ですね。</p>



<p class="wp-block-paragraph">なぜ対数にする必要があるのでしょうか。ガンマ関数は値が急激に大きくなる関数です。たとえばΓ(171) は約 7.26 x 10^306 という天文学的な数値です。スプレッドシートが扱える上限（約1.8 x 10^308）にすぐ到達します。</p>



<p class="wp-block-paragraph">対数に変換すると、桁数が大幅に圧縮されます。オーバーフローを気にせず計算を進められるのが最大のメリットです。</p>



<p class="wp-block-paragraph">GAMMALN関数にできることをまとめると、次のとおりです。</p>



<ul class="wp-block-list"><li>ガンマ関数の自然対数 ln(Γ(x)) を計算する</li><li>GAMMA関数がオーバーフローする大きな値でも安全に扱える</li><li>大きな数の階乗や組み合わせ計算の中間処理に使う</li><li>統計分布のパラメータ推定（最尤推定など）に活用する</li></ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>GAMMALN関数はGoogleスプレッドシートの全バージョンで使えます。Excelにも同名の関数があり、動作は同じです。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc2">GAMMALN関数の書き方（構文と引数）</span></h2>



<h3 class="wp-block-heading"><span id="toc3">基本構文</span></h3>



<pre class="wp-block-code"><code>=GAMMALN(値)</code></pre>



<p class="wp-block-paragraph">カッコの中に「値（ガンマ関数の自然対数を求めたい正の数値）」を1つだけ入れます。</p>



<h3 class="wp-block-heading"><span id="toc4">引数の説明</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/任意</th><th>説明</th></tr></thead><tbody><tr><td>値</td><td>必須</td><td>正の実数を指定する。0以下を指定すると#NUM!エラーになる</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">引数は1つだけなので、とてもシンプルです。ただし、0や負の数を指定するとエラーになるので注意してください。</p>



<h2 class="wp-block-heading"><span id="toc5">GAMMALN関数の基本的な使い方</span></h2>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/03/spreadsheet-sumif-function_01_data_sample-table.png" alt="01 data sample table" /></figure>



<h3 class="wp-block-heading"><span id="toc6">小さな数値で動作を確認する</span></h3>



<p class="wp-block-paragraph">まずは小さな数値で、GAMMALN関数の動作を確認してみましょう。</p>



<pre class="wp-block-code"><code>=GAMMALN(1)</code></pre>



<p class="wp-block-paragraph">結果は「0」です。Γ(1) = 1 なので、ln(1) = 0 になります。</p>



<pre class="wp-block-code"><code>=GAMMALN(5)</code></pre>



<p class="wp-block-paragraph">結果は約「3.18」です。これは ln(Γ(5)) = ln(24) = ln(4!) と同じ値です。</p>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/06/02_formula_gammaln-basic.png" alt="02 formula gammaln basic" /></figure>



<p class="wp-block-paragraph">検算してみましょう。<code>=LN(GAMMA(5))</code> も約「3.18」を返します。一致しますね。</p>



<pre class="wp-block-code"><code>=GAMMALN(0.5)</code></pre>



<p class="wp-block-paragraph">結果は約「0.57」です。Γ(0.5) = √π（約1.77）なので、ln(1.77) ≒ 0.57 です。</p>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/06/03_result_gammaln-basic.png" alt="03 result gammaln basic" /></figure>



<h3 class="wp-block-heading"><span id="toc7">大きな数値でオーバーフローを回避する</span></h3>



<p class="wp-block-paragraph">GAMMALN関数の真価は、大きな値を安全に扱えるところです。</p>



<pre class="wp-block-code"><code>=GAMMA(172)</code></pre>



<p class="wp-block-paragraph">この数式は#NUM!エラーになります。結果が大きすぎてスプレッドシートでは表現できません。</p>



<pre class="wp-block-code"><code>=GAMMALN(172)</code></pre>



<p class="wp-block-paragraph">こちらは約「711.71」を返します。エラーにならず計算できました。</p>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/06/04_result_gammaln-overflow.png" alt="04 result gammaln overflow" /></figure>



<p class="wp-block-paragraph">さらに大きな値も問題ありません。</p>



<pre class="wp-block-code"><code>=GAMMALN(1000)</code></pre>



<p class="wp-block-paragraph">結果は約「5905.22」です。Γ(1000) は10の2567乗を超える数値ですが、対数なら4桁に収まります。</p>



<h3 class="wp-block-heading"><span id="toc8">セル参照を使う</span></h3>



<p class="wp-block-paragraph">A1に数値が入っているとします。</p>



<pre class="wp-block-code"><code>=GAMMALN(A1)</code></pre>



<p class="wp-block-paragraph">セル参照を使えば、値を変えるだけで結果が自動更新されます。</p>



<h2 class="wp-block-heading"><span id="toc9">GAMMALN関数の実践的な使い方・応用例</span></h2>



<h3 class="wp-block-heading"><span id="toc10">大きな数の組み合わせ（nCr）をGAMMALNで計算する</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-combin-function/">COMBIN関数</a>は大きな数値でオーバーフローすることがあります。GAMMALNを使えば、対数の性質で安全に計算できます。</p>



<p class="wp-block-paragraph">組み合わせの公式 nCr = n! / (r! x (n-r)!) を対数に変換すると、次のようになります。</p>



<pre class="wp-block-code"><code>=EXP(GAMMALN(n+1) - GAMMALN(r+1) - GAMMALN(n-r+1))</code></pre>



<p class="wp-block-paragraph">たとえば 200C100（200個から100個を選ぶ組み合わせ）を計算してみましょう。</p>



<pre class="wp-block-code"><code>=EXP(GAMMALN(201) - GAMMALN(101) - GAMMALN(101))</code></pre>



<p class="wp-block-paragraph">結果は約 9.05 x 10^58 です。<code>=COMBIN(200,100)</code> でも同じ値が返ります。ただし、さらに大きな数値ではCOMBIN関数がエラーになる場合があります。</p>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/06/05_result_gammaln-combin.png" alt="05 result gammaln combin" /></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>対数の世界では「掛け算→足し算」「割り算→引き算」に変わります。GAMMALN関数はこの性質を活かして、巨大な数値の計算をシンプルにしてくれますよ。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc11">対数尤度の計算に使う</span></h3>



<p class="wp-block-paragraph">統計学の最尤推定では、尤度関数の対数（対数尤度）を計算する場面があります。ガンマ分布のパラメータ推定がその典型例です。</p>



<p class="wp-block-paragraph">ガンマ分布の対数尤度関数には ln(Γ(α)) が含まれます。αが大きくなるとΓ(α)は天文学的な数値です。そのため、GAMMALN関数で直接 ln(Γ(α)) を求めるのが定番です。</p>



<pre class="wp-block-code"><code>=GAMMALN(A1)</code></pre>



<p class="wp-block-paragraph">A1に形状パラメータαの候補値を入れて、対数尤度を計算します。αを変化させて対数尤度が最大になる値を探します。これがパラメータ推定の基本的な流れです。</p>



<h3 class="wp-block-heading"><span id="toc12">GAMMALNとEXPの組み合わせで元の値に戻す</span></h3>



<p class="wp-block-paragraph">GAMMALN関数の結果を元のガンマ関数値に戻したいときは、<a href="https://mashukabu.com/spreadsheet-exp-function/">EXP関数</a>を使います。</p>



<pre class="wp-block-code"><code>=EXP(GAMMALN(10))</code></pre>



<p class="wp-block-paragraph">結果は「362880」です。これは Γ(10) = 9! = 362880 と一致します。</p>



<p class="wp-block-paragraph">ただし、大きな値では<a href="https://mashukabu.com/spreadsheet-exp-function/">EXP関数</a>自体がオーバーフローします。ln(Γ(x)) の値が約709を超えると#NUM!エラーです。対数のまま計算を進めて、最後に必要な部分だけEXPで戻しましょう。</p>



<h3 class="wp-block-heading"><span id="toc13">階乗の比を安全に計算する</span></h3>



<p class="wp-block-paragraph">大きな数の階乗の比（例: 100! / 50!）を直接計算すると、オーバーフローします。GAMMALNなら差分で安全に計算できます。</p>



<pre class="wp-block-code"><code>=EXP(GAMMALN(101) - GAMMALN(51))</code></pre>



<p class="wp-block-paragraph">この数式は 100! / 50! を計算しています。GAMMALN(n+1) = ln(n!) なので、引き算で割り算を表現できます。結果は約 3.07 x 10^73 です。</p>



<h2 class="wp-block-heading"><span id="toc14">よくあるエラーと対処法</span></h2>



<p class="wp-block-paragraph">GAMMALN関数で発生しやすいエラーをまとめました。</p>



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>#NUM!</td><td>0以下の値を指定した</td><td>正の数値（0より大きい値）を指定する</td></tr><tr><td>#VALUE!</td><td>引数に文字列が入っている</td><td>セル参照先が数値かどうか確認する</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc15">0以下の値を指定したとき</span></h3>



<p class="wp-block-paragraph">GAMMALN関数は正の数値（0より大きい値）しか受け付けません。</p>



<pre class="wp-block-code"><code>=GAMMALN(0)</code></pre>



<p class="wp-block-paragraph">この数式は#NUM!エラーになります。負の数や0は指定できません。</p>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/06/06_error_gammaln-num.png" alt="06 error gammaln num" /></figure>



<p class="wp-block-paragraph">GAMMA関数は負の小数（-0.5など）を計算できます。しかし、GAMMALN関数は対応していません。ln(Γ(x)) は正の値のみで定義されるためです。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>負の値を含む計算が必要なときは、<a href="https://mashukabu.com/spreadsheet-gamma-function/">GAMMA関数</a>を直接使うか、GAMMALN.PRECISE関数（後述）を検討してください。GAMMALN.PRECISEも正の値のみ対応ですが、精度が若干異なります。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc16">GAMMALN.PRECISEとの違い</span></h2>



<p class="wp-block-paragraph">Googleスプレッドシートには、GAMMALN関数とは別に<strong>GAMMALN.PRECISE関数</strong>があります。</p>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>GAMMALN</th><th>GAMMALN.PRECISE</th></tr></thead><tbody><tr><td>構文</td><td>=GAMMALN(値)</td><td>=GAMMALN.PRECISE(値)</td></tr><tr><td>戻り値</td><td>ln(Γ(x))</td><td>ln(Γ(x))</td></tr><tr><td>引数の範囲</td><td>正の実数のみ</td><td>正の実数のみ</td></tr><tr><td>精度</td><td>標準精度</td><td>より高い数値精度</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">結論から言うと、<strong>ほとんどの場面で違いはありません</strong>。</p>



<p class="wp-block-paragraph">GAMMALN.PRECISE関数はExcel 2010で導入されました。旧バージョンのGAMMALN関数との精度差を解消する目的です。Googleスプレッドシートでは両方とも十分な精度を持っています。そのため、実用上の差はほぼゼロです。</p>



<pre class="wp-block-code"><code>=GAMMALN(100)</code></pre>



<pre class="wp-block-code"><code>=GAMMALN.PRECISE(100)</code></pre>



<p class="wp-block-paragraph">どちらも約「359.13」を返します。</p>



<p class="wp-block-paragraph">通常はGAMMALN関数を使えば問題ありません。Excel 2010以降との互換性が気になるときだけ、GAMMALN.PRECISEを検討してください。</p>



<h2 class="wp-block-heading"><span id="toc17">GAMMA関数・LN関数との違い・使い分け</span></h2>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>動作</th><th>対応する値</th><th>用途</th></tr></thead><tbody><tr><td><strong>GAMMALN</strong></td><td><strong>ln(Γ(x)) を返す</strong></td><td><strong>正の実数</strong></td><td><strong>大きな値のオーバーフロー回避</strong></td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-gamma-function/">GAMMA</a></td><td>Γ(x) を返す</td><td>正の実数（負の小数も可）</td><td>小数の階乗・統計分布の計算</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-ln-function/">LN</a></td><td>自然対数 ln(x) を返す</td><td>正の実数</td><td>成長率・対数変換</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-exp-function/">EXP</a></td><td>e^x を返す</td><td>任意の実数</td><td>LN/GAMMALNの逆変換</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc18">GAMMALNとGAMMAの関係</span></h3>



<p class="wp-block-paragraph">GAMMALN(x) = LN(GAMMA(x)) の関係です。GAMMA関数の結果に自然対数をかけた値を「1ステップで」返してくれます。</p>



<p class="wp-block-paragraph">小さな値ならGAMMA関数で直接計算するほうがわかりやすいです。約172以上の大きな値ではGAMMA関数がオーバーフローします。そのときはGAMMALN関数に切り替えましょう。</p>



<h3 class="wp-block-heading"><span id="toc19">GAMMALNとLNの組み合わせ</span></h3>



<p class="wp-block-paragraph">GAMMALN(x) と LN(GAMMA(x)) は数学的に同じです。ただし <code>=LN(GAMMA(x))</code> と書くと、GAMMA(x)の計算段階でオーバーフローする可能性があります。GAMMALN関数なら内部で直接対数を計算するため安全です。</p>



<p class="wp-block-paragraph">大きな値を扱うときは、必ず <code>=GAMMALN(x)</code> を使ってください。</p>



<h2 class="wp-block-heading"><span id="toc20">Excelとの違い</span></h2>



<p class="wp-block-paragraph">GAMMALN関数はExcelとGoogleスプレッドシートで完全に同じ動作です。</p>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>Excel</th><th>Googleスプレッドシート</th></tr></thead><tbody><tr><td>構文</td><td>=GAMMALN(数値)</td><td>=GAMMALN(値)</td></tr><tr><td>動作</td><td>ln(Γ(x)) を返す</td><td>ln(Γ(x)) を返す</td></tr><tr><td>対応バージョン</td><td>すべてのバージョン</td><td>全バージョン</td></tr><tr><td>エラー時</td><td>#NUM! / #VALUE!</td><td>#NUM! / #VALUE!</td></tr><tr><td>GAMMALN.PRECISE</td><td>Excel 2010以降</td><td>全バージョン</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ExcelではGAMMALN関数は古くからサポートされている関数です。ファイルのやり取りでも互換性の心配はありません。</p>



<h2 class="wp-block-heading"><span id="toc21">まとめ</span></h2>



<p class="wp-block-paragraph">GAMMALN関数は、ガンマ関数の自然対数 ln(Γ(x)) を返す関数です。</p>



<p class="wp-block-paragraph">ポイントを整理します。</p>



<ul class="wp-block-list"><li>構文は <code>=GAMMALN(値)</code> の1引数。正の実数のみ対応</li><li>GAMMALN(x) = LN(GAMMA(x)) の関係がある</li><li><a href="https://mashukabu.com/spreadsheet-gamma-function/">GAMMA関数</a>が約172以上でオーバーフローする問題を回避できる</li><li>大きな数の組み合わせ計算には <code>=EXP(GAMMALN(n+1) - GAMMALN(r+1) - GAMMALN(n-r+1))</code> が便利</li><li>GAMMALN.PRECISEとの実用上の差はほぼゼロ。通常はGAMMALNで問題なし</li><li>元のガンマ関数値に戻すには<a href="https://mashukabu.com/spreadsheet-exp-function/">EXP関数</a>を使う</li><li>Excelと完全互換。ファイルのやり取りも安心</li></ul>



<p class="wp-block-paragraph">まずは <code>=GAMMALN(5)</code> で「約3.18」が返ることを確認してみてください。<code>=LN(GAMMA(5))</code> と同じ値になるはずです。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-gammaln-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのGAMMALN.PRECISE関数の使い方｜ガンマ関数対数</title>
		<link>https://mashukabu.com/spreadsheet-gammaln-precise-function/</link>
					<comments>https://mashukabu.com/spreadsheet-gammaln-precise-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Fri, 27 Mar 2026 23:39:08 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[GAMMALN]]></category>
		<category><![CDATA[GAMMALN.PRECISE]]></category>
		<category><![CDATA[ガンマ関数]]></category>
		<category><![CDATA[スプレッドシート]]></category>
		<category><![CDATA[統計関数]]></category>
		<category><![CDATA[自然対数]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=5603</guid>

					<description><![CDATA[GoogleスプレッドシートのGAMMALN.PRECISE関数の使い方を初心者向けに解説。ガンマ関数の自然対数 ln(Gamma(x)) を高精度に計算する方法、GAMMALN関数との違い、実務での活用例やエラー対処法まで紹介します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「GAMMALN.PRECISE関数って、GAMMALN関数と何が違うの？」</p>



<p class="wp-block-paragraph">スプレッドシートでガンマ関数の自然対数を調べると、GAMMALN関数とGAMMALN.PRECISE関数の2つが見つかります。名前が似ていて、どちらを使えばいいか迷いますよね。</p>



<p class="wp-block-paragraph">結論から言うと、GAMMALN.PRECISE関数はGAMMALN関数の「高精度版」です。Excel 2010で精度改善のために導入されました。</p>



<p class="wp-block-paragraph">この記事では、GAMMALN.PRECISE関数の基本の書き方からGAMMALN関数との違い、実務での活用例まで紹介します。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-5" checked><label class="toc-title" for="toc-checkbox-5">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">スプレッドシートのGAMMALN.PRECISE関数とは？</a></li><li><a href="#toc2" tabindex="0">GAMMALN.PRECISE関数の書き方（構文と引数）</a><ol><li><a href="#toc3" tabindex="0">基本構文</a></li><li><a href="#toc4" tabindex="0">引数の説明</a></li></ol></li><li><a href="#toc5" tabindex="0">GAMMALN.PRECISE関数の基本的な使い方</a><ol><li><a href="#toc6" tabindex="0">小さな数値で動作を確認する</a></li><li><a href="#toc7" tabindex="0">大きな数値でオーバーフローを回避する</a></li><li><a href="#toc8" tabindex="0">セル参照を使う</a></li><li><a href="#toc9" tabindex="0">小数の引数も扱える</a></li></ol></li><li><a href="#toc10" tabindex="0">GAMMALN関数との違い</a><ol><li><a href="#toc11" tabindex="0">Googleスプレッドシートでは差がほぼゼロ</a></li><li><a href="#toc12" tabindex="0">なぜGAMMALN.PRECISEが存在するのか</a></li><li><a href="#toc13" tabindex="0">どちらを使うべきか</a></li></ol></li><li><a href="#toc14" tabindex="0">GAMMALN.PRECISE関数の実践的な使い方・応用例</a><ol><li><a href="#toc15" tabindex="0">大きな数の組み合わせ（nCr）を安全に計算する</a></li><li><a href="#toc16" tabindex="0">順列（nPr）も対数で計算する</a></li><li><a href="#toc17" tabindex="0">対数尤度の計算に使う</a></li><li><a href="#toc18" tabindex="0">ポアソン分布の対数確率質量を計算する</a></li><li><a href="#toc19" tabindex="0">ベータ分布のパラメータ推定に使う</a></li><li><a href="#toc20" tabindex="0">EXP関数と組み合わせて元の値に戻す</a></li><li><a href="#toc21" tabindex="0">階乗の比を安全に計算する</a></li><li><a href="#toc22" tabindex="0">多項係数を計算する</a></li><li><a href="#toc23" tabindex="0">Stirlingの近似と組み合わせて検算する</a></li></ol></li><li><a href="#toc24" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc25" tabindex="0">0以下の値を指定したとき</a></li><li><a href="#toc26" tabindex="0">文字列を指定したとき</a></li><li><a href="#toc27" tabindex="0">関数名のスペルミス</a></li><li><a href="#toc28" tabindex="0">結果が極端に大きい・小さいとき</a></li></ol></li><li><a href="#toc29" tabindex="0">似た関数との違い・使い分け</a><ol><li><a href="#toc30" tabindex="0">GAMMALN.PRECISEとGAMMAの関係</a></li><li><a href="#toc31" tabindex="0">GAMMALN.PRECISEとLNの組み合わせ</a></li><li><a href="#toc32" tabindex="0">GAMMALN.PRECISEとFACTの関係</a></li><li><a href="#toc33" tabindex="0">GAMMALN.PRECISEとSQRTPIの関係</a></li></ol></li><li><a href="#toc34" tabindex="0">数学的背景: ガンマ関数の対数とは</a></li><li><a href="#toc35" tabindex="0">Excelとの違い</a></li><li><a href="#toc36" tabindex="0">よくある質問（FAQ）</a><ol><li><a href="#toc37" tabindex="0">Q1. GAMMALN.PRECISEとGAMMALNはどちらを使えばいいですか？</a></li><li><a href="#toc38" tabindex="0">Q2. GAMMALN.PRECISEの結果がマイナスになるのはなぜですか？</a></li><li><a href="#toc39" tabindex="0">Q3. GAMMALN.PRECISEで負の値を計算するにはどうすればいいですか？</a></li><li><a href="#toc40" tabindex="0">Q4. 対数尤度を計算するときGAMMALN.PRECISEのほうがLN(GAMMA())より速いですか？</a></li><li><a href="#toc41" tabindex="0">Q5. GAMMALN.PRECISEを使えば確率分布の確率を直接計算できますか？</a></li><li><a href="#toc42" tabindex="0">Q6. Googleスプレッドシートの関数電卓的に1回だけ計算したいときも使えますか？</a></li><li><a href="#toc43" tabindex="0">Q7. ARRAYFORMULAと組み合わせて一括計算できますか？</a></li></ol></li><li><a href="#toc44" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">スプレッドシートのGAMMALN.PRECISE関数とは？</span></h2>



<p class="wp-block-paragraph">GAMMALN.PRECISE関数（読み方: ガンマ・エルエヌ・プリサイス関数）は、<strong>ガンマ関数の自然対数 ln(Gamma(x)) を高精度に返す関数</strong>です。</p>



<p class="wp-block-paragraph">関数名は「GAMMA（ガンマ関数）+ LN（自然対数 Natural Logarithm）+ PRECISE（精密な）」に由来します。名前のとおり、<a href="https://mashukabu.com/spreadsheet-gammaln-function/">GAMMALN関数</a>の精度を向上させた関数ですね。</p>



<p class="wp-block-paragraph">なぜ高精度版が必要だったのでしょうか。Excelの旧バージョンのGAMMALN関数には、特定の値で精度が低下する問題がありました。Excel 2010でこの問題を解消するために、GAMMALN.PRECISE関数が新設されたのです。</p>



<p class="wp-block-paragraph">GAMMALN.PRECISE関数にできることをまとめると、次のとおりです。</p>



<ul class="wp-block-list"><li>ガンマ関数の自然対数 ln(Gamma(x)) を高精度に計算する</li><li><a href="https://mashukabu.com/spreadsheet-gamma-function/">GAMMA関数</a>がオーバーフローする大きな値でも安全に扱える</li><li>大きな数の階乗や組み合わせ計算の中間処理に使う</li><li>統計分布のパラメータ推定（最尤推定など）に活用する</li><li><a href="https://mashukabu.com/spreadsheet-poisson-dist-function/">ポアソン分布</a>や<a href="https://mashukabu.com/spreadsheet-beta-dist-function/">ベータ分布</a>の確率密度計算で対数化に使う</li></ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>GAMMALN.PRECISE関数はGoogleスプレッドシートの全バージョンで使えます。Excelでは2010以降で対応しています。Microsoft 365やExcel 2021でも問題なく動作します。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc2">GAMMALN.PRECISE関数の書き方（構文と引数）</span></h2>



<h3 class="wp-block-heading"><span id="toc3">基本構文</span></h3>



<pre class="wp-block-code"><code>=GAMMALN.PRECISE(値)</code></pre>



<p class="wp-block-paragraph">カッコの中に「値（ガンマ関数の自然対数を求めたい正の数値）」を1つだけ入れます。</p>



<h3 class="wp-block-heading"><span id="toc4">引数の説明</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/任意</th><th>説明</th></tr></thead><tbody><tr><td>値</td><td>必須</td><td>正の実数を指定する。0以下を指定すると#NUM!エラーになる</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">引数は1つだけなので、とてもシンプルです。<a href="https://mashukabu.com/spreadsheet-gammaln-function/">GAMMALN関数</a>とまったく同じ形式ですね。</p>



<p class="wp-block-paragraph">引数には整数だけでなく小数も指定できます。たとえば <code>=GAMMALN.PRECISE(0.5)</code> や <code>=GAMMALN.PRECISE(2.7)</code> も計算可能です。これはガンマ関数が階乗を実数に拡張した関数であるためです。</p>



<h2 class="wp-block-heading"><span id="toc5">GAMMALN.PRECISE関数の基本的な使い方</span></h2>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/03/spreadsheet-sumif-function_01_data_sample-table.png" alt="01 data sample table" /></figure>



<h3 class="wp-block-heading"><span id="toc6">小さな数値で動作を確認する</span></h3>



<p class="wp-block-paragraph">まずは小さな数値で、GAMMALN.PRECISE関数の動作を確認してみましょう。</p>



<pre class="wp-block-code"><code>=GAMMALN.PRECISE(1)</code></pre>



<p class="wp-block-paragraph">結果は「0」です。Gamma(1) = 1 なので、ln(1) = 0 になります。</p>



<p class="wp-block-paragraph">!<a href="https://mashukabu.com/_images/spreadsheet-gammaln-precise-function/02_formula_gammaln-precise-basic.png/">_images/spreadsheet-gammaln-precise-function/02_formula_gammaln-precise-basic.png</a></p>



<pre class="wp-block-code"><code>=GAMMALN.PRECISE(5)</code></pre>



<p class="wp-block-paragraph">結果は約「3.18」です。これは ln(Gamma(5)) = ln(24) = ln(4!) と同じ値です。Gamma(5) は4の階乗（4! = 24）と等しいためですね。</p>



<p class="wp-block-paragraph">検算してみましょう。<code>=LN(GAMMA(5))</code> も約「3.18」を返します。一致しますね。</p>



<pre class="wp-block-code"><code>=GAMMALN.PRECISE(0.5)</code></pre>



<p class="wp-block-paragraph">結果は約「0.57」です。Gamma(0.5) = sqrt(pi)（約1.77）なので、ln(1.77) は約 0.57 です。<code>=LN(SQRT(PI()))</code> の結果と一致します。</p>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/06/03_result_gammaln-precise-basic.png" alt="03 result gammaln precise basic" /></figure>



<h3 class="wp-block-heading"><span id="toc7">大きな数値でオーバーフローを回避する</span></h3>



<p class="wp-block-paragraph">GAMMALN.PRECISE関数の真価は、大きな値を安全に扱えるところです。</p>



<pre class="wp-block-code"><code>=GAMMA(172)</code></pre>



<p class="wp-block-paragraph">この数式は#NUM!エラーになります。Gamma(172) は10の308乗を超えるため、スプレッドシートで扱える数値の上限（約1.79e+308）を超えてしまうからです。</p>



<pre class="wp-block-code"><code>=GAMMALN.PRECISE(172)</code></pre>



<p class="wp-block-paragraph">こちらは約「711.71」を返します。エラーにならず計算できました。対数を取ることで、数値の桁数が劇的に圧縮されるのですね。</p>



<p class="wp-block-paragraph">さらに大きな値も問題ありません。</p>



<pre class="wp-block-code"><code>=GAMMALN.PRECISE(1000)</code></pre>



<p class="wp-block-paragraph">結果は約「5905.22」です。Gamma(1000) は10の2567乗を超える数値ですが、対数なら4桁に収まります。</p>



<pre class="wp-block-code"><code>=GAMMALN.PRECISE(10000)</code></pre>



<p class="wp-block-paragraph">結果は約「82108.93」です。10万の階乗に近い数値の対数も、5桁程度で表現できます。</p>



<h3 class="wp-block-heading"><span id="toc8">セル参照を使う</span></h3>



<p class="wp-block-paragraph">A1に数値が入っているとします。</p>



<pre class="wp-block-code"><code>=GAMMALN.PRECISE(A1)</code></pre>



<p class="wp-block-paragraph">セル参照を使えば、値を変えるだけで結果が自動更新されます。</p>



<p class="wp-block-paragraph">A1:A10に連続した値が入っている場合は、配列数式やARRAYFORMULAで一括計算できます。</p>



<pre class="wp-block-code"><code>=ARRAYFORMULA(GAMMALN.PRECISE(A1:A10))</code></pre>



<p class="wp-block-paragraph">これでA1:A10の各値に対するGAMMALN.PRECISEの結果がB1:B10に展開されます。複数の値を一度に処理したいときに便利ですね。</p>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/06/04_result_gammaln-precise-arrayformula.png" alt="04 result gammaln precise arrayformula" /></figure>



<h3 class="wp-block-heading"><span id="toc9">小数の引数も扱える</span></h3>



<p class="wp-block-paragraph">GAMMALN.PRECISE関数は整数だけでなく小数も受け付けます。</p>



<pre class="wp-block-code"><code>=GAMMALN.PRECISE(3.5)</code></pre>



<p class="wp-block-paragraph">結果は約「1.20」です。Gamma(3.5) = 2.5 × 1.5 × 0.5 × sqrt(pi) ≈ 3.32 なので、ln(3.32) ≈ 1.20 と一致します。</p>



<pre class="wp-block-code"><code>=GAMMALN.PRECISE(10.5)</code></pre>



<p class="wp-block-paragraph">結果は約「12.80」です。整数と整数の間の値も滑らかに補間されるのがガンマ関数の特徴です。階乗を実数に拡張した関数だからこそ実現できる計算ですね。</p>



<h2 class="wp-block-heading"><span id="toc10">GAMMALN関数との違い</span></h2>



<p class="wp-block-paragraph">GAMMALN.PRECISE関数とGAMMALN関数の違いを整理しましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>GAMMALN</th><th>GAMMALN.PRECISE</th></tr></thead><tbody><tr><td>構文</td><td>=GAMMALN(値)</td><td>=GAMMALN.PRECISE(値)</td></tr><tr><td>戻り値</td><td>ln(Gamma(x))</td><td>ln(Gamma(x))</td></tr><tr><td>引数の範囲</td><td>正の実数のみ</td><td>正の実数のみ</td></tr><tr><td>精度</td><td>標準精度</td><td>より高い数値精度</td></tr><tr><td>Excel対応</td><td>すべてのバージョン</td><td>Excel 2010以降</td></tr><tr><td>導入の経緯</td><td>初期から搭載</td><td>精度改善目的で追加</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc11">Googleスプレッドシートでは差がほぼゼロ</span></h3>



<p class="wp-block-paragraph">Googleスプレッドシートでは、両関数の計算精度に実用上の差はほぼありません。</p>



<pre class="wp-block-code"><code>=GAMMALN(100)</code></pre>



<pre class="wp-block-code"><code>=GAMMALN.PRECISE(100)</code></pre>



<p class="wp-block-paragraph">どちらも約「359.13」を返します。小数点以下10桁以上を比較しても、同じ値です。</p>



<pre class="wp-block-code"><code>=GAMMALN(500)</code></pre>



<pre class="wp-block-code"><code>=GAMMALN.PRECISE(500)</code></pre>



<p class="wp-block-paragraph">大きな値でも結果は同じです。どちらも約「2605.12」を返します。</p>



<p class="wp-block-paragraph">差を見つけるためにあえて1から10まで両関数の結果を比較しても、IEEE 754倍精度浮動小数点数の表現範囲内では完全に一致します。Googleスプレッドシートは内部で同じ高精度アルゴリズム（Stirlingの近似やLanczosの公式など）を使っているためですね。</p>



<h3 class="wp-block-heading"><span id="toc12">なぜGAMMALN.PRECISEが存在するのか</span></h3>



<p class="wp-block-paragraph">Excelの旧バージョンのGAMMALN関数には、一部の値で精度が低下する問題がありました。Microsoftはこの問題に対して「既存関数を修正する」のではなく「高精度版を別関数として追加する」というアプローチを取りました。</p>



<p class="wp-block-paragraph">これは下位互換性を保つための判断です。既存のGAMMALN関数を変更すると、過去のワークブックで計算結果が変わってしまいます。そのリスクを避けるために、GAMMALN.PRECISE関数が新設されました。</p>



<p class="wp-block-paragraph">Excel 2010以降では他にも同様のリネーム関数が多数追加されています。WEIBULL → WEIBULL.DIST、POISSON → <a href="https://mashukabu.com/spreadsheet-poisson-dist-function/">POISSON.DIST</a>、NORMDIST → <a href="https://mashukabu.com/spreadsheet-norm-dist-function/">NORM.DIST</a> など、統計関数の精度改善・命名規則統一が一斉に行われた時期ですね。</p>



<p class="wp-block-paragraph">Googleスプレッドシートでは両方とも高精度で実装されています。そのため、どちらを使っても結果は変わりません。</p>



<h3 class="wp-block-heading"><span id="toc13">どちらを使うべきか</span></h3>



<p class="wp-block-paragraph">結論としては、以下の基準で選んでください。</p>



<ul class="wp-block-list"><li><strong>通常の用途</strong>: <a href="https://mashukabu.com/spreadsheet-gammaln-function/">GAMMALN関数</a>で問題ありません</li><li><strong>Excelファイルとの互換性重視</strong>: GAMMALN.PRECISE関数を使うと安心です</li><li><strong>新規でMicrosoft 365を使う環境</strong>: PRECISEが推奨されています</li><li><strong>古いExcelファイルとの互換性が必要</strong>: GAMMALN関数を使ってください</li></ul>



<p class="wp-block-paragraph">実務的にはGoogleスプレッドシートだけで完結する案件ならGAMMALN関数が短く書けて便利です。Excelとファイルを行き来する可能性があるならGAMMALN.PRECISEを選んでおくと将来の互換性で困りません。</p>



<h2 class="wp-block-heading"><span id="toc14">GAMMALN.PRECISE関数の実践的な使い方・応用例</span></h2>



<h3 class="wp-block-heading"><span id="toc15">大きな数の組み合わせ（nCr）を安全に計算する</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-combin-function/">COMBIN関数</a>は大きな数値でオーバーフローすることがあります。GAMMALN.PRECISEを使えば、対数の性質で安全に計算できます。</p>



<p class="wp-block-paragraph">組み合わせの公式 nCr = n! / (r! × (n-r)!) を対数に変換すると、次のようになります。</p>



<pre class="wp-block-code"><code>=EXP(GAMMALN.PRECISE(n+1) - GAMMALN.PRECISE(r+1) - GAMMALN.PRECISE(n-r+1))</code></pre>



<p class="wp-block-paragraph">たとえば 200C100（200個から100個を選ぶ組み合わせ）を計算してみましょう。</p>



<pre class="wp-block-code"><code>=EXP(GAMMALN.PRECISE(201) - GAMMALN.PRECISE(101) - GAMMALN.PRECISE(101))</code></pre>



<p class="wp-block-paragraph">結果は約 9.05 × 10^58 です。<a href="https://mashukabu.com/spreadsheet-combin-function/">COMBIN関数</a>の結果と一致します。</p>



<p class="wp-block-paragraph">さらに大きな組み合わせも計算できます。たとえば 1000C500 のような巨大な組み合わせはCOMBIN関数でオーバーフローしますが、GAMMALN.PRECISEなら次のように対数の差で求められます。</p>



<pre class="wp-block-code"><code>=GAMMALN.PRECISE(1001) - GAMMALN.PRECISE(501) - GAMMALN.PRECISE(501)</code></pre>



<p class="wp-block-paragraph">結果は約「690.31」で、対数のまま扱えば桁あふれの心配がありません。具体的な数値が必要ならEXPで戻せますが、対数値同士の比較や尤度計算では対数のまま使うのが定石です。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>対数の世界では「掛け算が足し算」「割り算が引き算」に変わります。GAMMALN.PRECISE関数はこの性質を活かして、巨大な数値の計算をシンプルにしてくれますよ。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc16">順列（nPr）も対数で計算する</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-permut-function/">PERMUT関数</a>も大きな値でオーバーフローします。順列 nPr = n! / (n-r)! は対数では次のように表現します。</p>



<pre class="wp-block-code"><code>=EXP(GAMMALN.PRECISE(n+1) - GAMMALN.PRECISE(n-r+1))</code></pre>



<p class="wp-block-paragraph">100個から30個を選ぶ順列 100P30 を計算してみます。</p>



<pre class="wp-block-code"><code>=EXP(GAMMALN.PRECISE(101) - GAMMALN.PRECISE(71))</code></pre>



<p class="wp-block-paragraph">結果は約 7.45 × 10^57 です。PERMUT関数も大きな値で#NUM!エラーになりますが、GAMMALN.PRECISEなら回避できます。</p>



<h3 class="wp-block-heading"><span id="toc17">対数尤度の計算に使う</span></h3>



<p class="wp-block-paragraph">統計学の最尤推定では、尤度関数の対数（対数尤度）を計算する場面があります。<a href="https://mashukabu.com/spreadsheet-gamma-dist-function/">ガンマ分布</a>のパラメータ推定がその典型例です。</p>



<p class="wp-block-paragraph">ガンマ分布の対数尤度関数には ln(Gamma(alpha)) が含まれます。alphaが大きくなるとGamma(alpha)は天文学的な数値です。そのため、GAMMALN.PRECISE関数で直接 ln(Gamma(alpha)) を求めます。</p>



<pre class="wp-block-code"><code>=GAMMALN.PRECISE(A1)</code></pre>



<p class="wp-block-paragraph">A1に形状パラメータalphaの候補値を入れて、対数尤度を計算します。alphaを変化させて対数尤度が最大になる値を探す流れです。</p>



<p class="wp-block-paragraph">具体的な対数尤度関数の例として、観測データ x1, x2, &#8230;, xn がガンマ分布に従うとき、対数尤度は次のようになります。</p>



<pre class="wp-block-code"><code>=n*A1*LN(B1) + (A1-1)*SUM(LN(C1:Cn)) - B1*SUM(C1:Cn) - n*GAMMALN.PRECISE(A1)</code></pre>



<p class="wp-block-paragraph">ここで A1=alpha（形状パラメータ）、B1=beta（尺度パラメータ）、C1:Cn=観測データです。最後の項 <code>n*GAMMALN.PRECISE(A1)</code> が対数化された規格化定数の役割を果たします。</p>



<h3 class="wp-block-heading"><span id="toc18">ポアソン分布の対数確率質量を計算する</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-poisson-dist-function/">POISSON.DIST関数</a>で確率を計算すると、平均値が大きいときアンダーフロー（極小値が0に丸められる）する場合があります。</p>



<p class="wp-block-paragraph">ポアソン分布の確率質量関数 P(X=k) = e^(-λ) × λ^k / k! を対数に変換すると、次のように書けます。</p>



<pre class="wp-block-code"><code>=-A1 + B1*LN(A1) - GAMMALN.PRECISE(B1+1)</code></pre>



<p class="wp-block-paragraph">ここで A1=λ（平均）、B1=k（観測値）です。<code>GAMMALN.PRECISE(B1+1)</code> は ln(k!) を計算しています。</p>



<p class="wp-block-paragraph">たとえば λ=100、k=150 のときの対数確率を計算してみます。</p>



<pre class="wp-block-code"><code>=-100 + 150*LN(100) - GAMMALN.PRECISE(151)</code></pre>



<p class="wp-block-paragraph">結果は約「-15.04」です。EXPで戻すと約 2.94 × 10^(-7) で、稀な事象であることがわかります。POISSON.DIST(150, 100, FALSE) でも同じ結果が得られますが、λやkがさらに大きい場合は対数のまま扱うのが安全です。</p>



<h3 class="wp-block-heading"><span id="toc19">ベータ分布のパラメータ推定に使う</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-beta-dist-function/">ベータ分布</a>の確率密度関数にも ln(Gamma) が現れます。ベータ分布の対数尤度の中の規格化定数 ln(Gamma(α+β) / (Gamma(α) × Gamma(β))) は次のように表現できます。</p>



<pre class="wp-block-code"><code>=GAMMALN.PRECISE(A1+B1) - GAMMALN.PRECISE(A1) - GAMMALN.PRECISE(B1)</code></pre>



<p class="wp-block-paragraph">A1=α、B1=β です。α と β が大きいときベータ関数自体は天文学的な小さい値や大きい値になりますが、対数なら安全に計算できます。</p>



<h3 class="wp-block-heading"><span id="toc20">EXP関数と組み合わせて元の値に戻す</span></h3>



<p class="wp-block-paragraph">GAMMALN.PRECISE関数の結果を元のガンマ関数値に戻したいときは、<a href="https://mashukabu.com/spreadsheet-exp-function/">EXP関数</a>を使います。</p>



<pre class="wp-block-code"><code>=EXP(GAMMALN.PRECISE(10))</code></pre>



<p class="wp-block-paragraph">結果は「362880」です。これは Gamma(10) = 9! = 362880 と一致します。</p>



<p class="wp-block-paragraph">ただし、大きな値では<a href="https://mashukabu.com/spreadsheet-exp-function/">EXP関数</a>自体がオーバーフローします。ln(Gamma(x)) の値が約709を超えると#NUM!エラーです。対数のまま計算を進めて、最後に必要な部分だけEXPで戻しましょう。</p>



<h3 class="wp-block-heading"><span id="toc21">階乗の比を安全に計算する</span></h3>



<p class="wp-block-paragraph">大きな数の階乗の比（例: 100! / 50!）を直接計算すると、オーバーフローします。GAMMALN.PRECISEなら差分で安全に計算できます。</p>



<pre class="wp-block-code"><code>=EXP(GAMMALN.PRECISE(101) - GAMMALN.PRECISE(51))</code></pre>



<p class="wp-block-paragraph">この数式は 100! / 50! を計算しています。GAMMALN.PRECISE(n+1) = ln(n!) なので、引き算で割り算を表現できます。結果は約 3.07 × 10^73 です。</p>



<h3 class="wp-block-heading"><span id="toc22">多項係数を計算する</span></h3>



<p class="wp-block-paragraph">多項係数 n! / (k1! × k2! × &#8230; × km!) も対数で計算できます。たとえばトランプ52枚を13枚ずつ4人に配る場合の数は 52! / (13!)^4 です。</p>



<pre class="wp-block-code"><code>=GAMMALN.PRECISE(53) - 4*GAMMALN.PRECISE(14)</code></pre>



<p class="wp-block-paragraph">結果は約「62.85」です。EXPで戻すと約 5.36 × 10^27 通りになります。多項係数はCOMBINを繰り返し使っても計算できますが、GAMMALN.PRECISEを使えば1つの式で簡潔に書けます。</p>



<h3 class="wp-block-heading"><span id="toc23">Stirlingの近似と組み合わせて検算する</span></h3>



<p class="wp-block-paragraph">数学的にはGAMMALN(x) ≈ x<em>LN(x) &#8211; x + 0.5</em>LN(2<em>PI()</em>x)（Stirlingの近似）です。GAMMALN.PRECISE関数の結果が妥当かどうか、Stirlingの近似で検算できます。</p>



<pre class="wp-block-code"><code>=A1*LN(A1) - A1 + 0.5*LN(2*PI()*A1)</code></pre>



<p class="wp-block-paragraph">A1=100 のとき、近似値は約「359.13」です。GAMMALN.PRECISE(100) と小数点以下4桁まで一致します。大きな値ほど近似精度が上がる性質を確認できますね。</p>



<h2 class="wp-block-heading"><span id="toc24">よくあるエラーと対処法</span></h2>



<p class="wp-block-paragraph">GAMMALN.PRECISE関数で発生しやすいエラーをまとめました。</p>



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>#NUM!</td><td>0以下の値を指定した</td><td>正の数値（0より大きい値）を指定する</td></tr><tr><td>#VALUE!</td><td>引数に文字列が入っている</td><td>セル参照先が数値かどうか確認する</td></tr><tr><td>#NAME?</td><td>関数名の入力ミス</td><td>「GAMMALN.PRECISE」のスペルを確認する</td></tr><tr><td>#N/A</td><td>引数が空</td><td>セル参照に値が入っているか確認する</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc25">0以下の値を指定したとき</span></h3>



<p class="wp-block-paragraph">GAMMALN.PRECISE関数は正の数値（0より大きい値）しか受け付けません。</p>



<pre class="wp-block-code"><code>=GAMMALN.PRECISE(0)</code></pre>



<p class="wp-block-paragraph">この数式は#NUM!エラーになります。負の数や0は指定できません。</p>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-gamma-function/">GAMMA関数</a>は負の小数（-0.5など）も計算できます。しかし、GAMMALN.PRECISE関数は対応していません。ln(Gamma(x)) は正の値のみで定義されるためです。</p>



<p class="wp-block-paragraph">エラーを避けたい場合は<a href="https://mashukabu.com/spreadsheet-iferror-function/">IFERROR関数</a>で前処理しましょう。</p>



<pre class="wp-block-code"><code>=IFERROR(GAMMALN.PRECISE(A1), &quot;正の数値を入力してください&quot;)</code></pre>



<p class="wp-block-paragraph">または<a href="https://mashukabu.com/spreadsheet-iferror-function/">IF関数</a>で条件分岐する方法もあります。</p>



<pre class="wp-block-code"><code>=IF(A1&gt;0, GAMMALN.PRECISE(A1), &quot;正の数値を入力してください&quot;)</code></pre>



<h3 class="wp-block-heading"><span id="toc26">文字列を指定したとき</span></h3>



<p class="wp-block-paragraph">引数に文字列が入っていると#VALUE!エラーになります。</p>



<pre class="wp-block-code"><code>=GAMMALN.PRECISE(&quot;10&quot;)</code></pre>



<p class="wp-block-paragraph">スプレッドシートが文字列を数値として解釈できる場合もありますが、確実に数値で渡したいときは<a href="https://mashukabu.com/spreadsheet-isnumber-function/">ISNUMBER関数</a>で事前チェックします。</p>



<pre class="wp-block-code"><code>=IF(ISNUMBER(A1), GAMMALN.PRECISE(A1), &quot;数値を入力してください&quot;)</code></pre>



<h3 class="wp-block-heading"><span id="toc27">関数名のスペルミス</span></h3>



<p class="wp-block-paragraph">GAMMALN.PRECISE関数は名前が長く、スペルミスが起きやすい関数です。</p>



<pre class="wp-block-code"><code>=GAMMALNPRECISE(5)</code></pre>



<p class="wp-block-paragraph">ドット（.）を忘れると#NAME?エラーになります。必ず「GAMMALN<strong>.</strong>PRECISE」とドットを入れてください。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>Googleスプレッドシートでは関数名の入力中にサジェストが表示されます。「GAMMALN」まで入力すれば、候補にGAMMALN.PRECISEが出てくるので活用してください。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc28">結果が極端に大きい・小さいとき</span></h3>



<p class="wp-block-paragraph">GAMMALN.PRECISEの結果を<a href="https://mashukabu.com/spreadsheet-exp-function/">EXP関数</a>で戻そうとして#NUM!エラーになることがあります。これは対数を戻した結果がスプレッドシートの数値範囲を超えているためです。</p>



<pre class="wp-block-code"><code>=EXP(GAMMALN.PRECISE(200))</code></pre>



<p class="wp-block-paragraph">GAMMALN.PRECISE(200) は約「857.93」を返します。EXP(857.93) は約 10^372 で、スプレッドシートの上限（約 1.79 × 10^308）を超えるため#NUM!エラーになります。</p>



<p class="wp-block-paragraph">対処法は2つあります。</p>



<ul class="wp-block-list"><li>対数のまま計算を進める（推奨）</li><li><a href="https://mashukabu.com/spreadsheet-round-function/">ROUND関数</a>で桁数を制限してから表示する</li></ul>



<p class="wp-block-paragraph">対数のまま使えるなら、わざわざEXPで戻す必要はありません。確率の比較や尤度の最大化なら対数値で十分です。</p>



<h2 class="wp-block-heading"><span id="toc29">似た関数との違い・使い分け</span></h2>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>動作</th><th>用途</th></tr></thead><tbody><tr><td><strong>GAMMALN.PRECISE</strong></td><td><strong>ln(Gamma(x)) を高精度に返す</strong></td><td><strong>大きな値のオーバーフロー回避（高精度）</strong></td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-gammaln-function/">GAMMALN</a></td><td>ln(Gamma(x)) を返す</td><td>大きな値のオーバーフロー回避（標準精度）</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-gamma-function/">GAMMA</a></td><td>Gamma(x) を返す</td><td>小数の階乗・統計分布の計算</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-ln-function/">LN</a></td><td>自然対数 ln(x) を返す</td><td>成長率・対数変換</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-log-function/">LOG</a></td><td>任意の底の対数を返す</td><td>桁数計算・指数の逆変換</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-exp-function/">EXP</a></td><td>e^x を返す</td><td>LN/GAMMALNの逆変換</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-fact-function/">FACT</a></td><td>n! を返す</td><td>整数の階乗（170まで）</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-combin-function/">COMBIN</a></td><td>nCr を返す</td><td>組み合わせ（小〜中規模）</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-permut-function/">PERMUT</a></td><td>nPr を返す</td><td>順列（小〜中規模）</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc30">GAMMALN.PRECISEとGAMMAの関係</span></h3>



<p class="wp-block-paragraph">GAMMALN.PRECISE(x) = LN(GAMMA(x)) の関係です。<a href="https://mashukabu.com/spreadsheet-gamma-function/">GAMMA関数</a>の結果に自然対数をかけた値を「1ステップで」返してくれます。</p>



<p class="wp-block-paragraph">小さな値ならGAMMA関数で直接計算するほうがわかりやすいです。約172以上の大きな値ではGAMMA関数がオーバーフローします。そのときはGAMMALN.PRECISE関数に切り替えましょう。</p>



<h3 class="wp-block-heading"><span id="toc31">GAMMALN.PRECISEとLNの組み合わせ</span></h3>



<p class="wp-block-paragraph">GAMMALN.PRECISE(x) と LN(GAMMA(x)) は数学的に同じです。ただし <code>=LN(GAMMA(x))</code> と書くと、GAMMA(x)の計算段階でオーバーフローする可能性があります。GAMMALN.PRECISE関数なら内部で直接対数を計算するため安全です。</p>



<p class="wp-block-paragraph">大きな値を扱うときは、必ず <code>=GAMMALN.PRECISE(x)</code> を使ってください。</p>



<h3 class="wp-block-heading"><span id="toc32">GAMMALN.PRECISEとFACTの関係</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-fact-function/">FACT関数</a>は整数の階乗（n!）を計算する関数です。GAMMALN.PRECISE(n+1) は ln(n!) と等しいため、両者には次の関係があります。</p>



<pre class="wp-block-code"><code>GAMMALN.PRECISE(n+1) = LN(FACT(n))</code></pre>



<p class="wp-block-paragraph">FACT関数は170までしか計算できません（171! でオーバーフロー）。171以上の階乗の対数を求めるならGAMMALN.PRECISEが必須です。</p>



<pre class="wp-block-code"><code>=GAMMALN.PRECISE(171)</code></pre>



<p class="wp-block-paragraph">結果は約「706.57」です。これは ln(170!) を表しています。整数の階乗を超えた範囲も計算できるのがGAMMALN.PRECISEの強みですね。</p>



<h3 class="wp-block-heading"><span id="toc33">GAMMALN.PRECISEとSQRTPIの関係</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-sqrtpi-function/">SQRTPI関数</a>は sqrt(pi × n) を返す関数です。一方、GAMMALN.PRECISE(0.5) = LN(SQRT(PI())) ≈ 0.5724 です。Gamma(0.5) = sqrt(pi) という有名な関係から、対数を取った値が GAMMALN.PRECISE(0.5) と一致しますね。</p>



<pre class="wp-block-code"><code>=EXP(GAMMALN.PRECISE(0.5))</code></pre>



<p class="wp-block-paragraph">結果は約「1.7725」で、SQRT(PI()) の値と一致します。</p>



<h2 class="wp-block-heading"><span id="toc34">数学的背景: ガンマ関数の対数とは</span></h2>



<p class="wp-block-paragraph">ガンマ関数 Γ(x) は階乗を実数に拡張した関数で、次の関係を満たします。</p>



<ul class="wp-block-list"><li>Γ(n) = (n-1)! （n が正の整数のとき）</li><li>Γ(x+1) = x × Γ(x) （漸化式）</li><li>Γ(0.5) = √π</li></ul>



<p class="wp-block-paragraph">ガンマ関数の値は x が大きくなると急激に増加します。たとえば Γ(20) は約 1.2 × 10^17、Γ(100) は約 9.3 × 10^155 という巨大な数値です。</p>



<p class="wp-block-paragraph">対数を取ると ln(Γ(x)) は穏やかに増加するため、計算機で扱いやすくなります。これがGAMMALN.PRECISE関数を使うメリットです。</p>



<p class="wp-block-paragraph">数値計算の世界では「桁あふれ防止」のために対数空間で計算するのが定番テクニックです。確率計算、機械学習の損失関数、統計推定など、幅広い場面でGAMMALN.PRECISEが活躍しますよ。</p>



<h2 class="wp-block-heading"><span id="toc35">Excelとの違い</span></h2>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>Excel</th><th>Googleスプレッドシート</th></tr></thead><tbody><tr><td>構文</td><td>=GAMMALN.PRECISE(数値)</td><td>=GAMMALN.PRECISE(値)</td></tr><tr><td>動作</td><td>ln(Gamma(x)) を返す</td><td>ln(Gamma(x)) を返す</td></tr><tr><td>対応バージョン</td><td>Excel 2010以降</td><td>全バージョン</td></tr><tr><td>エラー時</td><td>#NUM! / #VALUE!</td><td>#NUM! / #VALUE! / #NAME?</td></tr><tr><td>GAMMALNとの精度差</td><td>旧バージョンでは差あり</td><td>差なし</td></tr><tr><td>ARRAYFORMULA対応</td><td>スピル機能で実現（Microsoft 365）</td><td>ARRAYFORMULAで明示的に展開</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ExcelではGAMMALN.PRECISE関数はExcel 2010で導入されました。Microsoft 365やExcel 2021/2024でも問題なく動作します。</p>



<p class="wp-block-paragraph">Googleスプレッドシートでは全バージョンで対応しています。ExcelファイルをGoogleスプレッドシートにインポートした場合も、そのまま動作します。Excel側でGAMMALN.PRECISEを使った数式があっても、Googleスプレッドシート側で同じ結果を再現できます。</p>



<h2 class="wp-block-heading"><span id="toc36">よくある質問（FAQ）</span></h2>



<h3 class="wp-block-heading"><span id="toc37">Q1. GAMMALN.PRECISEとGAMMALNはどちらを使えばいいですか？</span></h3>



<p class="wp-block-paragraph">Googleスプレッドシートでは両者の精度差はほぼないため、どちらを使っても問題ありません。Excelとの互換性が必要ならGAMMALN.PRECISEを推奨します。新規で書くなら短い<a href="https://mashukabu.com/spreadsheet-gammaln-function/">GAMMALN関数</a>で十分です。</p>



<h3 class="wp-block-heading"><span id="toc38">Q2. GAMMALN.PRECISEの結果がマイナスになるのはなぜですか？</span></h3>



<p class="wp-block-paragraph">引数が1未満（0 < x < 1）のとき、Gamma(x) は1より大きくなるため対数は正になります。逆に x が2に近いとき Gamma(x) は1に近いため、対数は0付近になります。たとえば <code>=GAMMALN.PRECISE(2)</code> は0、<code>=GAMMALN.PRECISE(1.5)</code> は約「-0.12」とマイナスになる場合があります。これは正常な動作です。</p>



<h3 class="wp-block-heading"><span id="toc39">Q3. GAMMALN.PRECISEで負の値を計算するにはどうすればいいですか？</span></h3>



<p class="wp-block-paragraph">GAMMALN.PRECISEは正の実数しか受け付けません。負の値のガンマ関数を計算したい場合は、<a href="https://mashukabu.com/spreadsheet-gamma-function/">GAMMA関数</a>を使い、結果に<a href="https://mashukabu.com/spreadsheet-ln-function/">LN関数</a>を組み合わせてください。ただし負の整数 (0, -1, -2, &#8230;) でGAMMA関数は#NUM!エラーになる点に注意してください。</p>



<h3 class="wp-block-heading"><span id="toc40">Q4. 対数尤度を計算するときGAMMALN.PRECISEのほうがLN(GAMMA())より速いですか？</span></h3>



<p class="wp-block-paragraph">実行速度は同等ですが、<code>=LN(GAMMA(x))</code> は x が大きいとGAMMA(x)でオーバーフローして計算自体ができません。GAMMALN.PRECISEは内部で直接対数を計算するため、大きな値でもエラーになりません。実務では x ≥ 172 のときはGAMMALN.PRECISE一択です。</p>



<h3 class="wp-block-heading"><span id="toc41">Q5. GAMMALN.PRECISEを使えば確率分布の確率を直接計算できますか？</span></h3>



<p class="wp-block-paragraph">直接の確率は計算できませんが、確率密度関数や確率質量関数の「対数化された形」で計算できます。たとえばポアソン分布なら <code>-λ + k*LN(λ) - GAMMALN.PRECISE(k+1)</code> で対数確率を計算できます。最終的に確率値が必要なら<a href="https://mashukabu.com/spreadsheet-exp-function/">EXP関数</a>で戻します。確率が小さすぎてアンダーフローしそうなときに有効なテクニックです。</p>



<h3 class="wp-block-heading"><span id="toc42">Q6. Googleスプレッドシートの関数電卓的に1回だけ計算したいときも使えますか？</span></h3>



<p class="wp-block-paragraph">はい。任意のセルで <code>=GAMMALN.PRECISE(5)</code> のように入力すれば、その場で結果が表示されます。引数の値を変えれば結果も即座に更新されます。電卓代わりに使うときは、別タブやサブシートを「計算用」として用意しておくと便利ですよ。</p>



<h3 class="wp-block-heading"><span id="toc43">Q7. ARRAYFORMULAと組み合わせて一括計算できますか？</span></h3>



<p class="wp-block-paragraph">はい。<code>=ARRAYFORMULA(GAMMALN.PRECISE(A1:A100))</code> のように書けば、A1:A100の各値に対するGAMMALN.PRECISEの結果がB1:B100に展開されます。大量のデータで対数尤度や対数階乗を計算するときに重宝します。</p>



<h2 class="wp-block-heading"><span id="toc44">まとめ</span></h2>



<p class="wp-block-paragraph">GAMMALN.PRECISE関数は、ガンマ関数の自然対数 ln(Gamma(x)) を高精度に返す関数です。</p>



<p class="wp-block-paragraph">ポイントを整理します。</p>



<ul class="wp-block-list"><li>構文は <code>=GAMMALN.PRECISE(値)</code> の1引数。正の実数のみ対応</li><li><a href="https://mashukabu.com/spreadsheet-gammaln-function/">GAMMALN関数</a>の高精度版として、Excel 2010で導入された</li><li>Googleスプレッドシートでは両関数の精度差はほぼゼロ</li><li>大きな数の組み合わせ計算には <code>=EXP(GAMMALN.PRECISE(n+1) - GAMMALN.PRECISE(r+1) - GAMMALN.PRECISE(n-r+1))</code> が便利</li><li><a href="https://mashukabu.com/spreadsheet-gamma-function/">GAMMA関数</a>が約172以上でオーバーフローする問題を回避できる</li><li><a href="https://mashukabu.com/spreadsheet-poisson-dist-function/">ポアソン分布</a>・<a href="https://mashukabu.com/spreadsheet-beta-dist-function/">ベータ分布</a>・<a href="https://mashukabu.com/spreadsheet-gamma-dist-function/">ガンマ分布</a>の対数尤度計算に使える</li><li>元のガンマ関数値に戻すには<a href="https://mashukabu.com/spreadsheet-exp-function/">EXP関数</a>を使う</li><li>Excelとの互換性を重視するならGAMMALN.PRECISEを選ぶと安心</li></ul>



<p class="wp-block-paragraph">まずは <code>=GAMMALN.PRECISE(5)</code> で「約3.18」が返ることを確認してみてください。<code>=GAMMALN(5)</code> と同じ値になるはずです。</p>



<p class="wp-block-paragraph">その後、対数尤度計算や巨大な組み合わせ計算など、実務シーンで活用してみてくださいね。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-gammaln-precise-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのEXP関数の使い方｜eのべき乗</title>
		<link>https://mashukabu.com/spreadsheet-exp-function/</link>
					<comments>https://mashukabu.com/spreadsheet-exp-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sat, 21 Mar 2026 11:35:52 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[EXP]]></category>
		<category><![CDATA[eのべき乗]]></category>
		<category><![CDATA[スプレッドシート]]></category>
		<category><![CDATA[ネイピア数]]></category>
		<category><![CDATA[数学関数]]></category>
		<category><![CDATA[自然対数]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4871</guid>

					<description><![CDATA[GoogleスプレッドシートのEXP関数の使い方を初心者向けに解説。ネイピア数eのべき乗を返す関数で、連続複利計算や成長率の算出に活用できます。LN関数との逆関数関係やPOWER関数との違いも紹介します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">スプレッドシートで「eの2乗」や「eの-1乗」を計算したいとき、どうしていますか？</p>



<p class="wp-block-paragraph">「そもそもeって何？」と思った方もいるかもしれません。eはネイピア数と呼ばれる数学の定数で、約2.718です。</p>



<p class="wp-block-paragraph">連続的な成長や減衰の計算で使われます。</p>



<p class="wp-block-paragraph">EXP関数を使えば、このeのべき乗をかんたんに求められます。引数を1つ指定するだけなので、使い方はとてもシンプルです。</p>



<p class="wp-block-paragraph">この記事では基本の書き方から、連続複利計算での活用、LN関数との逆関数関係やPOWER関数との違いまで紹介します。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-6" checked><label class="toc-title" for="toc-checkbox-6">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">EXP関数とは？</a></li><li><a href="#toc2" tabindex="0">EXP関数の書き方（構文と引数）</a><ol><li><a href="#toc3" tabindex="0">基本構文</a></li><li><a href="#toc4" tabindex="0">引数の説明</a></li></ol></li><li><a href="#toc5" tabindex="0">EXP関数の基本的な使い方</a><ol><li><a href="#toc6" tabindex="0">eの正のべき乗</a></li><li><a href="#toc7" tabindex="0">eの0乗</a></li><li><a href="#toc8" tabindex="0">eの負のべき乗</a></li><li><a href="#toc9" tabindex="0">まとめると</a></li><li><a href="#toc10" tabindex="0">セル参照を使う</a></li></ol></li><li><a href="#toc11" tabindex="0">実務でのEXP関数活用例</a><ol><li><a href="#toc12" tabindex="0">連続複利で将来の金額を求める</a></li><li><a href="#toc13" tabindex="0">指数関数的な成長率を計算する</a></li><li><a href="#toc14" tabindex="0">ネイピア数eの値を表示する</a></li></ol></li><li><a href="#toc15" tabindex="0">EXP関数とLN関数の逆関数関係</a></li><li><a href="#toc16" tabindex="0">EXP関数とPOWER関数の違い</a></li><li><a href="#toc17" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc18" tabindex="0">文字列を渡したとき</a></li><li><a href="#toc19" tabindex="0">指数が大きすぎるとき</a></li></ol></li><li><a href="#toc20" tabindex="0">似た関数との違い・使い分け</a><ol><li><a href="#toc21" tabindex="0">EXP関数とLN関数の使い分け</a></li><li><a href="#toc22" tabindex="0">EXP関数とPOWER関数の使い分け</a></li></ol></li><li><a href="#toc23" tabindex="0">Excelとの違い</a></li><li><a href="#toc24" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">EXP関数とは？</span></h2>



<p class="wp-block-paragraph">EXP関数（読み方: イクスポネンシャル関数）は、<strong>ネイピア数e（約2.71828）のべき乗を返す関数</strong>です。</p>



<p class="wp-block-paragraph">名前は英語の「exponential（指数関数）」からきています。</p>



<p class="wp-block-paragraph">ネイピア数eは「自然対数の底」とも呼ばれる数学の定数です。円周率のように無限に続く小数で、値は約2.71828です。</p>



<p class="wp-block-paragraph">EXP関数にできることをまとめると、次のとおりです。</p>



<ul class="wp-block-list"><li>ネイピア数eのべき乗（e^n）を計算する</li><li>連続複利の計算で将来の金額を求める</li><li>LN関数の逆演算として、自然対数から元の値を復元する</li><li>指数関数的な成長や減衰のモデルを作る</li></ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>EXP関数はGoogleスプレッドシートの全バージョンで使えます。Excelとの互換性も完全なので、ファイルのやり取りでも安心です。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc2">EXP関数の書き方（構文と引数）</span></h2>



<h3 class="wp-block-heading"><span id="toc3">基本構文</span></h3>



<pre class="wp-block-code"><code>=EXP(指数)</code></pre>



<p class="wp-block-paragraph">カッコの中に「eの何乗を求めるか」を1つ入れるだけです。</p>



<h3 class="wp-block-heading"><span id="toc4">引数の説明</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/任意</th><th>説明</th></tr></thead><tbody><tr><td>指数</td><td>必須</td><td>eを底とするべき乗の指数。数値やセル参照、数式を指定できる</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">引数は1つだけです。正の数・負の数・小数・ゼロのいずれも指定できます。</p>



<h2 class="wp-block-heading"><span id="toc5">EXP関数の基本的な使い方</span></h2>



<h3 class="wp-block-heading"><span id="toc6">eの正のべき乗</span></h3>



<pre class="wp-block-code"><code>=EXP(1)</code></pre>



<p class="wp-block-paragraph">結果は「2.71828&#8230;」です。e^1、つまりeそのものの値が返ります。</p>



<pre class="wp-block-code"><code>=EXP(2)</code></pre>



<p class="wp-block-paragraph">結果は「7.38906&#8230;」です。eの2乗ですね。</p>



<pre class="wp-block-code"><code>=EXP(3)</code></pre>



<p class="wp-block-paragraph">結果は「20.08554&#8230;」です。指数が1増えるごとに約2.718倍になっていくのがわかります。</p>



<h3 class="wp-block-heading"><span id="toc7">eの0乗</span></h3>



<pre class="wp-block-code"><code>=EXP(0)</code></pre>



<p class="wp-block-paragraph">結果は「1」です。どんな数でも0乗は1になる、という数学のルールどおりです。</p>



<h3 class="wp-block-heading"><span id="toc8">eの負のべき乗</span></h3>



<pre class="wp-block-code"><code>=EXP(-1)</code></pre>



<p class="wp-block-paragraph">結果は「0.36788&#8230;」です。e^(-1)は「1/e」と同じ意味です。</p>



<pre class="wp-block-code"><code>=EXP(-2)</code></pre>



<p class="wp-block-paragraph">結果は「0.13534&#8230;」です。指数が負になると、結果は0に近づいていきます。</p>



<h3 class="wp-block-heading"><span id="toc9">まとめると</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>数式</th><th>結果（小数第5位まで）</th><th>意味</th></tr></thead><tbody><tr><td>=EXP(0)</td><td>1</td><td>eの0乗</td></tr><tr><td>=EXP(1)</td><td>2.71828</td><td>eの1乗（= e）</td></tr><tr><td>=EXP(2)</td><td>7.38906</td><td>eの2乗</td></tr><tr><td>=EXP(-1)</td><td>0.36788</td><td>eの-1乗（= 1/e）</td></tr><tr><td>=EXP(0.5)</td><td>1.64872</td><td>eの0.5乗（= ルートe）</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc10">セル参照を使う</span></h3>



<p class="wp-block-paragraph">実務ではセル参照を使うケースがほとんどです。A2セルに指数の値が入っているとします。</p>



<pre class="wp-block-code"><code>=EXP(A2)</code></pre>



<p class="wp-block-paragraph">セル参照にしておけば、指数の値を変更するだけで結果が自動的に更新されます。</p>



<h2 class="wp-block-heading"><span id="toc11">実務でのEXP関数活用例</span></h2>



<h3 class="wp-block-heading"><span id="toc12">連続複利で将来の金額を求める</span></h3>



<p class="wp-block-paragraph">EXP関数がもっとも活躍するのが連続複利計算です。</p>



<p class="wp-block-paragraph">通常の複利計算は年に1回・月に1回と区切って利息を計算します。</p>



<p class="wp-block-paragraph">連続複利は「無限に細かい間隔で利息がつく」理論上の最大複利です。</p>



<p class="wp-block-paragraph">元本がA2、年利率がB2、年数がC2に入っているとします。</p>



<pre class="wp-block-code"><code>=A2*EXP(B2*C2)</code></pre>



<p class="wp-block-paragraph">たとえば元本100万円、年利3%、10年間なら次のようになります。</p>



<pre class="wp-block-code"><code>=1000000*EXP(0.03*10)</code></pre>



<p class="wp-block-paragraph">結果は「1,349,859」（円未満切り捨て前）です。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>通常の年複利では <code>=1000000*POWER(1+0.03, 10)</code> で「1,343,916」です。連続複利のほうが約6,000円多くなります。差額は小さいですが、金融の理論計算では連続複利がよく使われます。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc13">指数関数的な成長率を計算する</span></h3>



<p class="wp-block-paragraph">前年比の成長率から「連続成長率」を求め、将来の予測値を出すパターンです。</p>



<p class="wp-block-paragraph">現在の売上がA2、連続成長率がB2、年数がC2に入っているとします。</p>



<pre class="wp-block-code"><code>=A2*EXP(B2*C2)</code></pre>



<p class="wp-block-paragraph">現在の売上が1,000万円、連続成長率10%、3年後を予測する場合はこうです。</p>



<pre class="wp-block-code"><code>=10000000*EXP(0.1*3)</code></pre>



<p class="wp-block-paragraph">結果は「13,498,588」です。3年後の売上は約1,350万円と予測できます。</p>



<h3 class="wp-block-heading"><span id="toc14">ネイピア数eの値を表示する</span></h3>



<p class="wp-block-paragraph">eの正確な値を知りたいときは、EXP(1)を使います。</p>



<pre class="wp-block-code"><code>=EXP(1)</code></pre>



<p class="wp-block-paragraph">結果は「2.71828182845905」です。これがスプレッドシートで扱えるeの精度です。</p>



<p class="wp-block-paragraph">数学の定数としてセルに固定しておきたいときに便利ですね。</p>



<h2 class="wp-block-heading"><span id="toc15">EXP関数とLN関数の逆関数関係</span></h2>



<p class="wp-block-paragraph">EXP関数とLN関数は逆関数の関係にあります。一方の結果をもう一方に渡すと、元の値に戻ります。</p>



<ul class="wp-block-list"><li><strong>EXP関数</strong>: 指数 → eのべき乗を返す（「2」を渡すと「e^2 = 7.389&#8230;」）</li><li><strong>LN関数</strong>: eのべき乗 → 指数を返す（「7.389&#8230;」を渡すと「2」）</li></ul>



<p class="wp-block-paragraph">実際に確かめてみましょう。</p>



<pre class="wp-block-code"><code>=EXP(2)        → 7.38906...
=LN(EXP(2))    → 2</code></pre>



<p class="wp-block-paragraph">EXP(2)の結果をLN関数に渡すと、元の「2」に戻ります。</p>



<pre class="wp-block-code"><code>=LN(10)         → 2.30259...
=EXP(LN(10))    → 10</code></pre>



<p class="wp-block-paragraph">LN(10)の結果をEXP関数に渡すと、元の「10」に戻ります。</p>



<p class="wp-block-paragraph">この関係は「対数で計算した結果を元のスケールに戻す」場面で役立ちます。</p>



<p class="wp-block-paragraph">たとえば、対数変換したデータを元に戻すときに使います。</p>



<h2 class="wp-block-heading"><span id="toc16">EXP関数とPOWER関数の違い</span></h2>



<p class="wp-block-paragraph">EXP関数は「底がeに固定されたべき乗」です。</p>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-power-function/">POWER関数</a>は底を自由に指定できます。</p>



<pre class="wp-block-code"><code>=EXP(2)           → 7.38906...（eの2乗）
=POWER(2.718, 2)   → 7.38752...（近似値）
=POWER(3, 2)       → 9（3の2乗）</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>EXP関数</th><th>POWER関数</th></tr></thead><tbody><tr><td>底</td><td>e（約2.718）に固定</td><td>自由に指定できる</td></tr><tr><td>引数</td><td>1つ（指数のみ）</td><td>2つ（底と指数）</td></tr><tr><td>用途</td><td>eのべき乗・連続複利・指数関数</td><td>任意のべき乗・複利・面積計算</td></tr><tr><td>逆関数</td><td>LN関数</td><td>LOG関数</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">使い分けのポイントは「底がeかどうか」です。</p>



<ul class="wp-block-list"><li>eのべき乗が必要 → EXP関数</li><li>e以外のべき乗が必要 → <a href="https://mashukabu.com/spreadsheet-power-function/">POWER関数</a></li></ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>EXP関数はPOWER関数で書き直すこともできます。<code>=EXP(n)</code> は <code>=POWER(EXP(1), n)</code> と同じ結果です。ただしEXP関数のほうがシンプルですし、計算精度も高くなります。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc17">よくあるエラーと対処法</span></h2>



<p class="wp-block-paragraph">EXP関数は引数1つのシンプルな関数ですが、エラーが出ることもあります。</p>



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>#VALUE!</td><td>引数に文字列が入っている</td><td>セル参照先が数値かどうか確認する</td></tr><tr><td>#ERROR!</td><td>構文ミス（カッコ忘れ等）</td><td>数式の入力内容を見直す</td></tr><tr><td>#NUM!</td><td>指数が大きすぎて計算不能</td><td>指数の値を確認する（709以下にする）</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc18">文字列を渡したとき</span></h3>



<p class="wp-block-paragraph">EXP関数に文字列を渡すと#VALUE!エラーです。</p>



<pre class="wp-block-code"><code>=EXP(&quot;abc&quot;)</code></pre>



<p class="wp-block-paragraph">セル参照先が数値かどうか不安なときは、ISNUMBER関数で事前にチェックできます。</p>



<pre class="wp-block-code"><code>=IF(ISNUMBER(A1), EXP(A1), &quot;数値を入力してください&quot;)</code></pre>



<h3 class="wp-block-heading"><span id="toc19">指数が大きすぎるとき</span></h3>



<p class="wp-block-paragraph">EXP関数の指数に極端に大きな値を指定すると、結果がスプレッドシートの扱える範囲を超えてエラーになります。</p>



<pre class="wp-block-code"><code>=EXP(710)</code></pre>



<p class="wp-block-paragraph">指数は709程度が上限の目安です。通常の業務計算でこの上限に当たることはほとんどありません。</p>



<h2 class="wp-block-heading"><span id="toc20">似た関数との違い・使い分け</span></h2>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>動作</th><th>引数</th><th>戻り値</th></tr></thead><tbody><tr><td><strong>EXP</strong></td><td><strong>eのべき乗を返す</strong></td><td><strong>1つ</strong></td><td><strong>e^n の値</strong></td></tr><tr><td>LN</td><td>自然対数を返す</td><td>1つ</td><td>eを底とする対数</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-power-function/">POWER</a></td><td>任意の底のべき乗を返す</td><td>2つ</td><td>底^指数 の値</td></tr><tr><td>LOG</td><td>指定した底の対数を返す</td><td>1〜2つ</td><td>指定した底の対数</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc21">EXP関数とLN関数の使い分け</span></h3>



<p class="wp-block-paragraph">EXP関数とLN関数は逆の操作です。</p>



<pre class="wp-block-code"><code>=EXP(2)    → 7.389...（eの2乗）
=LN(7.389) → 2（eの何乗で7.389になるか）</code></pre>



<p class="wp-block-paragraph">「指数から値を求める」ならEXP関数、「値から指数を求める」ならLN関数です。</p>



<h3 class="wp-block-heading"><span id="toc22">EXP関数とPOWER関数の使い分け</span></h3>



<p class="wp-block-paragraph">底がeならEXP関数、e以外の底ならPOWER関数です。</p>



<pre class="wp-block-code"><code>=EXP(3)       → 20.086...（eの3乗）
=POWER(2, 3)  → 8（2の3乗）</code></pre>



<p class="wp-block-paragraph">連続複利や自然対数の計算にはEXP関数を使います。年複利や面積計算など一般的なべき乗にはPOWER関数が適しています。</p>



<h2 class="wp-block-heading"><span id="toc23">Excelとの違い</span></h2>



<p class="wp-block-paragraph">EXP関数はExcelとGoogleスプレッドシートで完全に同じ動作です。</p>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>Excel</th><th>Googleスプレッドシート</th></tr></thead><tbody><tr><td>構文</td><td>=EXP(数値)</td><td>=EXP(指数)</td></tr><tr><td>動作</td><td>eのべき乗を返す</td><td>eのべき乗を返す</td></tr><tr><td>精度</td><td>15桁</td><td>15桁</td></tr><tr><td>上限</td><td>約709.78</td><td>約709.78</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">引数名の表記が若干異なるだけで、機能は完全に同じです。ファイルを共有しても計算結果はずれません。</p>



<h2 class="wp-block-heading"><span id="toc24">まとめ</span></h2>



<p class="wp-block-paragraph">EXP関数は、ネイピア数e（約2.718）のべき乗を返す関数です。</p>



<p class="wp-block-paragraph">ポイントを整理します。</p>



<ul class="wp-block-list"><li>構文は <code>=EXP(指数)</code> の1引数。eを指数の回数だけ掛け合わせた値を返す</li><li>連続複利の計算では <code>=元本<em>EXP(利率</em>期間)</code> で将来の金額がわかる</li><li>LN関数とは逆関数の関係。EXP(LN(x)) = x、LN(EXP(x)) = x</li><li><a href="https://mashukabu.com/spreadsheet-power-function/">POWER関数</a>との違いは「底がeに固定されているかどうか」</li><li>eの値を知りたいときは <code>=EXP(1)</code> で約2.71828が返る</li><li>指数に負の数を入れるとeの逆数方向の値が返る（減衰の計算に使える）</li></ul>



<p class="wp-block-paragraph">まずは <code>=EXP(1)</code> でネイピア数eの値を表示するところから試してみてください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-exp-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのLN関数の使い方｜自然対数</title>
		<link>https://mashukabu.com/spreadsheet-ln-function/</link>
					<comments>https://mashukabu.com/spreadsheet-ln-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sat, 21 Mar 2026 11:33:09 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[LN]]></category>
		<category><![CDATA[スプレッドシート]]></category>
		<category><![CDATA[ネイピア数]]></category>
		<category><![CDATA[対数]]></category>
		<category><![CDATA[数学関数]]></category>
		<category><![CDATA[自然対数]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4821</guid>

					<description><![CDATA[GoogleスプレッドシートのLN関数の使い方を初心者向けに解説。自然対数（底e）を返す関数で、成長率の計算や対数変換に使えます。EXP関数との逆関数関係やLOG・LOG10との使い分けも紹介します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">スプレッドシートで「この値はeの何乗か？」を調べたいとき、どうしていますか？</p>



<p class="wp-block-paragraph">「そもそも自然対数って何？」と思った方もいるかもしれません。自然対数はネイピア数e（約2.718）を底とする対数です。</p>



<p class="wp-block-paragraph">LN関数を使えば、自然対数をかんたんに求められます。引数を1つ指定するだけなので、使い方はとてもシンプルです。</p>



<p class="wp-block-paragraph">この記事では基本の書き方から、成長率の計算での活用まで紹介します。EXP関数との逆関数関係やLOG・LOG10との使い分けも解説します。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-7" checked><label class="toc-title" for="toc-checkbox-7">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">LN関数とは？</a></li><li><a href="#toc2" tabindex="0">LN関数の書き方（構文と引数）</a><ol><li><a href="#toc3" tabindex="0">基本構文</a></li><li><a href="#toc4" tabindex="0">引数の説明</a></li></ol></li><li><a href="#toc5" tabindex="0">LN関数の基本的な使い方</a><ol><li><a href="#toc6" tabindex="0">LN(1) = 0 を確かめる</a></li><li><a href="#toc7" tabindex="0">LN(e) = 1 を確かめる</a></li><li><a href="#toc8" tabindex="0">いろいろな値の自然対数</a></li><li><a href="#toc9" tabindex="0">まとめると</a></li><li><a href="#toc10" tabindex="0">セル参照を使う</a></li></ol></li><li><a href="#toc11" tabindex="0">実務でのLN関数活用例</a><ol><li><a href="#toc12" tabindex="0">連続成長率を求める</a></li><li><a href="#toc13" tabindex="0">対数変換でデータの偏りを補正する</a></li><li><a href="#toc14" tabindex="0">年数から複利回数を逆算する</a></li></ol></li><li><a href="#toc15" tabindex="0">LN関数とEXP関数の逆関数関係</a></li><li><a href="#toc16" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc17" tabindex="0">0や負の数を渡したとき</a></li><li><a href="#toc18" tabindex="0">文字列を渡したとき</a></li></ol></li><li><a href="#toc19" tabindex="0">似た関数との違い・使い分け</a><ol><li><a href="#toc20" tabindex="0">LN関数とLOG関数の使い分け</a></li><li><a href="#toc21" tabindex="0">LN関数とLOG10関数の使い分け</a></li><li><a href="#toc22" tabindex="0">LN関数とEXP関数の使い分け</a></li></ol></li><li><a href="#toc23" tabindex="0">Excelとの違い</a></li><li><a href="#toc24" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">LN関数とは？</span></h2>



<p class="wp-block-paragraph">LN関数（読み方: ナチュラルログ関数）は、<strong>指定した値の自然対数（底eの対数）を返す関数</strong>です。</p>



<p class="wp-block-paragraph">名前は英語の「Natural Logarithm（自然対数）」の頭文字からきています。</p>



<p class="wp-block-paragraph">自然対数とは「ネイピア数e（約2.71828）を何乗したら、その値になるか」を表す数です。</p>



<p class="wp-block-paragraph">LN関数にできることをまとめると、次のとおりです。</p>



<ul class="wp-block-list"><li>指定した値の自然対数（底eの対数）を計算する</li><li>連続成長率を求める（売上の伸び率の計算など）</li><li>EXP関数の逆演算として、eのべき乗から指数を取り出す</li><li>データの対数変換でばらつきを抑える</li></ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>LN関数はGoogleスプレッドシートの全バージョンで使えます。Excelとの互換性も完全なので、ファイルのやり取りでも安心です。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc2">LN関数の書き方（構文と引数）</span></h2>



<h3 class="wp-block-heading"><span id="toc3">基本構文</span></h3>



<pre class="wp-block-code"><code>=LN(値)</code></pre>



<p class="wp-block-paragraph">カッコの中に「自然対数を求めたい正の数」を1つ入れるだけです。</p>



<h3 class="wp-block-heading"><span id="toc4">引数の説明</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/任意</th><th>説明</th></tr></thead><tbody><tr><td>値</td><td>必須</td><td>自然対数を求めたい正の数値。セル参照や数式も指定できる</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">引数は1つだけです。正の数のみ指定できます。0や負の数を入れるとエラーになります。</p>



<h2 class="wp-block-heading"><span id="toc5">LN関数の基本的な使い方</span></h2>



<h3 class="wp-block-heading"><span id="toc6">LN(1) = 0 を確かめる</span></h3>



<pre class="wp-block-code"><code>=LN(1)</code></pre>



<p class="wp-block-paragraph">結果は「0」です。eの0乗は1なので、LN(1) = 0 になります。</p>



<h3 class="wp-block-heading"><span id="toc7">LN(e) = 1 を確かめる</span></h3>



<pre class="wp-block-code"><code>=LN(EXP(1))</code></pre>



<p class="wp-block-paragraph">結果は「1」です。EXP(1)はeそのものの値（約2.71828）です。eの1乗はeなので、自然対数は1になります。</p>



<h3 class="wp-block-heading"><span id="toc8">いろいろな値の自然対数</span></h3>



<pre class="wp-block-code"><code>=LN(2)</code></pre>



<p class="wp-block-paragraph">結果は「0.69315&#8230;」です。eの約0.693乗が2になるという意味です。</p>



<pre class="wp-block-code"><code>=LN(10)</code></pre>



<p class="wp-block-paragraph">結果は「2.30259&#8230;」です。eの約2.303乗が10になります。</p>



<pre class="wp-block-code"><code>=LN(100)</code></pre>



<p class="wp-block-paragraph">結果は「4.60517&#8230;」です。値が大きくなると対数もゆっくり増えていきます。</p>



<h3 class="wp-block-heading"><span id="toc9">まとめると</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>数式</th><th>結果（小数第5位まで）</th><th>意味</th></tr></thead><tbody><tr><td>=LN(1)</td><td>0</td><td>eの0乗 = 1</td></tr><tr><td>=LN(2)</td><td>0.69315</td><td>eの約0.693乗 = 2</td></tr><tr><td>=LN(10)</td><td>2.30259</td><td>eの約2.303乗 = 10</td></tr><tr><td>=LN(100)</td><td>4.60517</td><td>eの約4.605乗 = 100</td></tr><tr><td>=LN(EXP(1))</td><td>1</td><td>eの1乗 = e</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc10">セル参照を使う</span></h3>



<p class="wp-block-paragraph">実務ではセル参照を使うケースがほとんどです。A2セルに値が入っているとします。</p>



<pre class="wp-block-code"><code>=LN(A2)</code></pre>



<p class="wp-block-paragraph">セル参照にしておけば、値を変更するだけで結果が自動的に更新されます。</p>



<h2 class="wp-block-heading"><span id="toc11">実務でのLN関数活用例</span></h2>



<h3 class="wp-block-heading"><span id="toc12">連続成長率を求める</span></h3>



<p class="wp-block-paragraph">LN関数がもっとも活躍するのが成長率の計算です。</p>



<p class="wp-block-paragraph">ある期間の開始値と終了値から「連続成長率」を求められます。</p>



<p class="wp-block-paragraph">開始値がA2、終了値がB2に入っているとします。</p>



<pre class="wp-block-code"><code>=LN(B2/A2)</code></pre>



<p class="wp-block-paragraph">たとえば売上が100万円から150万円に伸びた場合はこうです。</p>



<pre class="wp-block-code"><code>=LN(1500000/1000000)</code></pre>



<p class="wp-block-paragraph">結果は「0.40546&#8230;」、つまり連続成長率は約40.5%です。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>通常の成長率は <code>=(B2-A2)/A2</code> で「50%」です。連続成長率のほうが小さい値になります。連続成長率は複利の効果を織り込んだ計算なので、期間をまたぐ比較に適しています。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc13">対数変換でデータの偏りを補正する</span></h3>



<p class="wp-block-paragraph">売上や人口など、桁数が大きく異なるデータをグラフにすると、小さい値がつぶれてしまいます。</p>



<p class="wp-block-paragraph">LN関数で対数変換すれば、ばらつきを抑えて比較しやすくなります。</p>



<p class="wp-block-paragraph">売上データがA2に入っているとします。</p>



<pre class="wp-block-code"><code>=LN(A2)</code></pre>



<p class="wp-block-paragraph">たとえば10万円・100万円・1,000万円のデータがあるとします。</p>



<figure class="wp-block-table"><table><thead><tr><th>元の値</th><th>=LN(元の値)</th></tr></thead><tbody><tr><td>100,000</td><td>11.51</td></tr><tr><td>1,000,000</td><td>13.82</td></tr><tr><td>10,000,000</td><td>16.12</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">100倍の差があったデータが、対数変換すると1.15倍の差に収まります。</p>



<h3 class="wp-block-heading"><span id="toc14">年数から複利回数を逆算する</span></h3>



<p class="wp-block-paragraph">「元本が2倍になるまで何年かかるか」を求めるパターンです。</p>



<p class="wp-block-paragraph">年利率がA2に入っているとします。</p>



<pre class="wp-block-code"><code>=LN(2)/LN(1+A2)</code></pre>



<p class="wp-block-paragraph">たとえば年利5%の場合はこうです。</p>



<pre class="wp-block-code"><code>=LN(2)/LN(1+0.05)</code></pre>



<p class="wp-block-paragraph">結果は「14.21」、つまり約14年で元本が2倍になります。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>これは「72の法則」（72 / 利率 = 倍になる年数）の正確な計算版です。72/5 = 14.4年と近い値になりますね。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc15">LN関数とEXP関数の逆関数関係</span></h2>



<p class="wp-block-paragraph">LN関数と<a href="https://mashukabu.com/spreadsheet-exp-function/">EXP関数</a>は逆関数の関係にあります。</p>



<p class="wp-block-paragraph">一方の結果をもう一方に渡すと、元の値に戻ります。</p>



<ul class="wp-block-list"><li><strong>LN関数</strong>: 値 → eの何乗かを返す（「7.389&#8230;」を渡すと「2」）</li><li><strong>EXP関数</strong>: 指数 → eのべき乗を返す（「2」を渡すと「7.389&#8230;」）</li></ul>



<p class="wp-block-paragraph">実際に確かめてみましょう。</p>



<pre class="wp-block-code"><code>=LN(10)         → 2.30259...
=EXP(LN(10))    → 10</code></pre>



<p class="wp-block-paragraph">LN(10)の結果をEXP関数に渡すと、元の「10」に戻ります。</p>



<pre class="wp-block-code"><code>=EXP(2)        → 7.38906...
=LN(EXP(2))    → 2</code></pre>



<p class="wp-block-paragraph">EXP(2)の結果をLN関数に渡すと、元の「2」に戻ります。</p>



<p class="wp-block-paragraph">この関係は「対数変換したデータを元に戻す」場面で役立ちます。</p>



<p class="wp-block-paragraph">LN関数で対数変換したデータを、EXP関数で元のスケールに復元できます。</p>



<h2 class="wp-block-heading"><span id="toc16">よくあるエラーと対処法</span></h2>



<p class="wp-block-paragraph">LN関数は引数1つのシンプルな関数ですが、エラーが出ることもあります。</p>



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>#NUM!</td><td>引数に0や負の数を指定した</td><td>正の数のみ指定する</td></tr><tr><td>#VALUE!</td><td>引数に文字列が入っている</td><td>セル参照先が数値かどうか確認する</td></tr><tr><td>#ERROR!</td><td>構文ミス（カッコ忘れ等）</td><td>数式の入力内容を見直す</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc17">0や負の数を渡したとき</span></h3>



<p class="wp-block-paragraph">LN関数に0や負の数を渡すと#NUM!エラーです。</p>



<pre class="wp-block-code"><code>=LN(0)    → #NUM!
=LN(-1)   → #NUM!</code></pre>



<p class="wp-block-paragraph">対数は正の数に対してのみ定義されるため、0以下の値は計算できません。</p>



<p class="wp-block-paragraph">セル参照先にゼロが入る可能性があるときは、IF関数で事前にチェックしましょう。</p>



<pre class="wp-block-code"><code>=IF(A1&gt;0, LN(A1), &quot;正の数を入力してください&quot;)</code></pre>



<h3 class="wp-block-heading"><span id="toc18">文字列を渡したとき</span></h3>



<p class="wp-block-paragraph">LN関数に文字列を渡すと#VALUE!エラーです。</p>



<pre class="wp-block-code"><code>=LN(&quot;abc&quot;)</code></pre>



<p class="wp-block-paragraph">セル参照先が数値かどうか不安なときは、ISNUMBER関数で確認できます。</p>



<pre class="wp-block-code"><code>=IF(ISNUMBER(A1), LN(A1), &quot;数値を入力してください&quot;)</code></pre>



<h2 class="wp-block-heading"><span id="toc19">似た関数との違い・使い分け</span></h2>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>動作</th><th>底</th><th>引数</th></tr></thead><tbody><tr><td><strong>LN</strong></td><td><strong>自然対数を返す</strong></td><td><strong>e（約2.718）</strong></td><td><strong>1つ</strong></td></tr><tr><td>LOG</td><td>指定した底の対数を返す</td><td>自由に指定</td><td>1〜2つ</td></tr><tr><td>LOG10</td><td>常用対数を返す</td><td>10</td><td>1つ</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-exp-function/">EXP</a></td><td>eのべき乗を返す</td><td>e（約2.718）</td><td>1つ</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc20">LN関数とLOG関数の使い分け</span></h3>



<p class="wp-block-paragraph">LN関数は底がeに固定された対数です。LOG関数は底を自由に指定できます。</p>



<pre class="wp-block-code"><code>=LN(100)       → 4.60517...（底eの対数）
=LOG(100, 10)  → 2（底10の対数）
=LOG(100, 2)   → 6.64386...（底2の対数）</code></pre>



<p class="wp-block-paragraph">底がeなら迷わずLN関数を使いましょう。底を変えたいときはLOG関数です。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>LOG関数で底を省略すると底が10になります。つまり <code>=LOG(100)</code> と <code>=LOG10(100)</code> は同じ結果です。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc21">LN関数とLOG10関数の使い分け</span></h3>



<p class="wp-block-paragraph">LN関数は底がe（自然対数）、LOG10関数は底が10（常用対数）です。</p>



<pre class="wp-block-code"><code>=LN(1000)     → 6.90776...（底eの対数）
=LOG10(1000)  → 3（底10の対数）</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>LN関数</th><th>LOG10関数</th></tr></thead><tbody><tr><td>底</td><td>e（約2.718）</td><td>10</td></tr><tr><td>主な用途</td><td>連続成長率・統計分析・微積分</td><td>桁数の計算・pH計算・デシベル</td></tr><tr><td>逆関数</td><td>EXP関数</td><td>POWER(10, x)</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">使い分けのポイントは「何の底が必要か」です。</p>



<ul class="wp-block-list"><li>成長率や統計の計算 → LN関数（底e）</li><li>桁数やスケール変換 → LOG10関数（底10）</li></ul>



<h3 class="wp-block-heading"><span id="toc22">LN関数とEXP関数の使い分け</span></h3>



<p class="wp-block-paragraph">LN関数とEXP関数は逆の操作です。</p>



<pre class="wp-block-code"><code>=LN(10)    → 2.303...（10はeの何乗か）
=EXP(2.303) → 10（eの2.303乗はいくつか）</code></pre>



<p class="wp-block-paragraph">「値から指数を求める」ならLN関数、「指数から値を求める」なら<a href="https://mashukabu.com/spreadsheet-exp-function/">EXP関数</a>です。</p>



<h2 class="wp-block-heading"><span id="toc23">Excelとの違い</span></h2>



<p class="wp-block-paragraph">LN関数はExcelとGoogleスプレッドシートで完全に同じ動作です。</p>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>Excel</th><th>Googleスプレッドシート</th></tr></thead><tbody><tr><td>構文</td><td>=LN(数値)</td><td>=LN(値)</td></tr><tr><td>動作</td><td>自然対数を返す</td><td>自然対数を返す</td></tr><tr><td>精度</td><td>15桁</td><td>15桁</td></tr><tr><td>0以下の引数</td><td>#NUM!</td><td>#NUM!</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">引数名の表記が若干異なるだけで、機能は完全に同じです。ファイルを共有しても計算結果はずれません。</p>



<h2 class="wp-block-heading"><span id="toc24">まとめ</span></h2>



<p class="wp-block-paragraph">LN関数は、指定した値の自然対数（底eの対数）を返す関数です。</p>



<p class="wp-block-paragraph">ポイントを整理します。</p>



<ul class="wp-block-list"><li>構文は <code>=LN(値)</code> の1引数。正の数のみ指定できる</li><li>LN(1) = 0、LN(e) = 1 が基本の関係</li><li>連続成長率の計算では <code>=LN(終了値/開始値)</code> で求められる</li><li><a href="https://mashukabu.com/spreadsheet-exp-function/">EXP関数</a>とは逆関数の関係。LN(EXP(x)) = x、EXP(LN(x)) = x</li><li>LOG関数との違いは「底がeに固定されているかどうか」</li><li>LOG10関数は底が10の常用対数。用途が異なる</li></ul>



<p class="wp-block-paragraph">まずは <code>=LN(10)</code> で10の自然対数を表示するところから試してみてください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-ln-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ExcelのLN関数の使い方｜自然対数の基本とEXP関数との関係</title>
		<link>https://mashukabu.com/excel-function-howto-use-ln/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-ln/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sat, 24 Sep 2022 09:00:00 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[EXP関数]]></category>
		<category><![CDATA[LN関数]]></category>
		<category><![CDATA[対数]]></category>
		<category><![CDATA[数学関数]]></category>
		<category><![CDATA[自然対数]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=2752</guid>

					<description><![CDATA[ExcelのLN関数は自然対数（底がe）を求める関数です。書式・引数・エラー対処から、EXP関数との逆関数関係、連続複利・対数リターン・回帰分析の実務活用まで、図解と事例で丁寧に解説します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「自然対数って何だっけ…」と聞かれて、すぐに答えられますか。学生時代に習ったはずなのに、いざExcelで使おうとすると手が止まりますよね。</p>



<p class="wp-block-paragraph">でも心配いりません。ExcelのLN関数は引数が1つだけのシンプルな関数です。仕組みを理解すれば、連続複利の試算、成長率の比較、回帰分析の前処理にも使いこなせます。</p>



<p class="wp-block-paragraph">この記事では、LN関数の基本から<a href="https://mashukabu.com/excel-function-howto-use-exp/">EXP関数</a>との逆関数関係、実務での使いどころ、エラー対処までわかりやすく解説します。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-8" checked><label class="toc-title" for="toc-checkbox-8">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">ExcelのLN関数とは？</a><ol><li><a href="#toc2" tabindex="0">LN・LOG・LOG10の使い分け早見表</a></li></ol></li><li><a href="#toc3" tabindex="0">LN関数の書式と引数</a><ol><li><a href="#toc4" tabindex="0">対応バージョン</a></li></ol></li><li><a href="#toc5" tabindex="0">LN関数の基本的な使い方</a><ol><li><a href="#toc6" tabindex="0">数値を直接指定する</a></li><li><a href="#toc7" tabindex="0">セル参照で指定する</a></li><li><a href="#toc8" tabindex="0">数式の中で組み合わせる</a></li><li><a href="#toc9" tabindex="0">主な入力値と結果の一覧</a></li></ol></li><li><a href="#toc10" tabindex="0">EXP関数との逆関数関係</a><ol><li><a href="#toc11" tabindex="0">数学的に見た逆関数の意味</a></li></ol></li><li><a href="#toc12" tabindex="0">LN関数の実務活用パターン</a><ol><li><a href="#toc13" tabindex="0">パターン1: 連続複利で目標到達年数を計算する</a></li><li><a href="#toc14" tabindex="0">パターン2: 対数リターンで成長率を比較する</a></li><li><a href="#toc15" tabindex="0">パターン3: 散布図に対数軸を当てて分析する</a></li></ol></li><li><a href="#toc16" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc17" tabindex="0">#NUM!エラー</a></li><li><a href="#toc18" tabindex="0">#VALUE!エラー</a></li><li><a href="#toc19" tabindex="0">IFERRORでエラーを一括回避する</a></li></ol></li><li><a href="#toc20" tabindex="0">LN関数とSUMPRODUCT・配列関数の組み合わせ</a></li><li><a href="#toc21" tabindex="0">まとめ</a><ol><li><a href="#toc22" tabindex="0">関連記事</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">ExcelのLN関数とは？</span></h2>



<p class="wp-block-paragraph">LN関数は、<strong>自然対数（しぜんたいすう）</strong> を求める関数です。読み方は「ログ ナチュラル」です。関数名は <strong>L</strong>ogarithm <strong>N</strong>atural（自然対数）の頭文字に由来します。</p>



<p class="wp-block-paragraph">自然対数とは、<strong>e（ネイピア数）</strong> を底とする対数のことです。eは約2.71828で、円周率と同じく数学の世界で頻繁に登場する定数です。</p>



<p class="wp-block-paragraph">たとえば <code>=LN(7.389)</code> と入力すると、結果は約 <strong>2</strong> になります。これは「eを2乗すると約7.389になる」ことを意味しています。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>e^2 ≒ 7.389　⟺　LN(7.389) ≒ 2</p></blockquote>



<p class="wp-block-paragraph">「eって何に使うの？」と感じるかもしれません。eは自然界の成長や減衰を表す数式に登場します。人口の増加率や放射性物質の半減期など、連続的に変化する現象はeで記述されます。Excelでは、そうした計算を手軽に行えるのがLN関数です。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>自然対数は数学では <code>ln(x)</code>、工学では <code>log_e(x)</code> とも書きます。Excelでは「LN関数」が国際標準で、英語版・日本語版を問わず同じ名称です。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc2">LN・LOG・LOG10の使い分け早見表</span></h3>



<p class="wp-block-paragraph">Excelには対数を求める関数が3つあります。違いは「底が何か」だけです。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>底</th><th>書式例</th><th>主な用途</th></tr></thead><tbody><tr><td>LN</td><td>e≒2.718（固定）</td><td>=LN(10)</td><td>自然対数（連続複利・成長率）</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-log/">LOG</a></td><td>任意に指定可能（省略時は10）</td><td>=LOG(8,2)</td><td>底を自由に選びたいとき</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-log10/">LOG10</a></td><td>10（固定）</td><td>=LOG10(100)</td><td>常用対数（桁数計算・デシベル）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">自然対数を使いたいならLN関数を選びましょう。LOG関数でも <code>=LOG(10, EXP(1))</code> と書けば同じ結果になります。ただし、LN関数のほうがはるかに簡潔ですよ。</p>



<h2 class="wp-block-heading"><span id="toc3">LN関数の書式と引数</span></h2>



<p class="wp-block-paragraph">LN関数の構文は次のとおりです。</p>



<pre class="wp-block-code"><code>=LN(数値)</code></pre>



<p class="wp-block-paragraph">引数は <strong>1つだけ</strong> です。底を指定する必要はありません。自然対数に特化したシンプルな関数です。</p>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/省略可</th><th>説明</th></tr></thead><tbody><tr><td>数値</td><td>必須</td><td>自然対数を求めたい正の実数を指定します</td></tr></tbody></table></figure>



<ul class="wp-block-list"><li>セル参照・数値・数式のいずれも指定できます</li><li>0以下の値を指定すると <strong>#NUM!エラー</strong> になります</li><li>テキストを指定すると <strong>#VALUE!エラー</strong> になります</li><li>戻り値はdouble型の浮動小数点数です。15桁精度で計算されます</li></ul>



<h3 class="wp-block-heading"><span id="toc4">対応バージョン</span></h3>



<p class="wp-block-paragraph">LN関数はExcelの初期バージョンから搭載されている標準関数です。Excel 2007以降の全バージョンに加え、Excel for Mac、Excel for Web、Microsoft 365でも利用できます。互換性を気にせず使えるので安心ですよ。</p>



<h2 class="wp-block-heading"><span id="toc5">LN関数の基本的な使い方</span></h2>



<p class="wp-block-paragraph">実際にLN関数を使ってみましょう。</p>



<h3 class="wp-block-heading"><span id="toc6">数値を直接指定する</span></h3>



<pre class="wp-block-code"><code>=LN(1)</code></pre>



<p class="wp-block-paragraph">結果は <strong>0</strong> です。eの0乗は1だからです。どんな底でも、1の対数は必ず0になります。</p>



<h3 class="wp-block-heading"><span id="toc7">セル参照で指定する</span></h3>



<pre class="wp-block-code"><code>=LN(A1)</code></pre>



<p class="wp-block-paragraph">A1セルの値の自然対数を返します。データが変われば結果も自動で更新されるので便利ですよ。</p>



<h3 class="wp-block-heading"><span id="toc8">数式の中で組み合わせる</span></h3>



<pre class="wp-block-code"><code>=LN(SUM(B2:B10))</code></pre>



<p class="wp-block-paragraph">合計値の自然対数を一発で求められます。中間セルを用意する必要はありません。</p>



<h3 class="wp-block-heading"><span id="toc9">主な入力値と結果の一覧</span></h3>



<p class="wp-block-paragraph">覚えておくと便利な値をまとめました。</p>



<figure class="wp-block-table"><table><thead><tr><th>入力値</th><th>LN の結果</th><th>意味</th></tr></thead><tbody><tr><td>1</td><td>0</td><td>eの0乗 = 1</td></tr><tr><td>e（≒2.718）</td><td>1</td><td>eの1乗 = e</td></tr><tr><td>7.389</td><td>約2</td><td>eの2乗 ≒ 7.389</td></tr><tr><td>10</td><td>約2.303</td><td>eの約2.303乗 = 10</td></tr><tr><td>0.5</td><td>約-0.693</td><td>eの約-0.693乗 ≒ 0.5</td></tr><tr><td>100</td><td>約4.605</td><td>eの約4.605乗 ≒ 100</td></tr><tr><td>1000</td><td>約6.908</td><td>eの約6.908乗 ≒ 1000</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">eのちょうどの累乗なら整数が返ります。それ以外の値では小数になりますよ。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>Excelで「e」そのものを入力したいときは <code>=EXP(1)</code> と書きます。<code>=LN(EXP(1))</code> を試すと、結果が <strong>1</strong> になることを確認できます。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc10">EXP関数との逆関数関係</span></h2>



<p class="wp-block-paragraph">LN関数を使ううえで最も大切なのが、<strong><a href="https://mashukabu.com/excel-function-howto-use-exp/">EXP関数</a>との逆関数関係</strong> です。</p>



<p class="wp-block-paragraph">EXP関数は「eのべき乗」を求める関数です。つまり次の関係が成り立ちます。</p>



<figure class="wp-block-table"><table><thead><tr><th>式</th><th>結果</th><th>説明</th></tr></thead><tbody><tr><td>=LN(EXP(3))</td><td>3</td><td>eの3乗を自然対数に戻すと3</td></tr><tr><td>=EXP(LN(10))</td><td>10</td><td>10の自然対数をeで累乗すると10</td></tr><tr><td>=LN(EXP(0))</td><td>0</td><td>eの0乗は1。LN(1)は0</td></tr><tr><td>=EXP(LN(0.5))</td><td>0.5</td><td>1未満の値でも逆関数関係は成立</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">この関係を一言でまとめると、<strong>LNで対数にした値はEXPで元に戻せる</strong> ということです。逆も同じです。</p>



<p class="wp-block-paragraph">「LNで変換 → 計算 → EXPで元に戻す」という流れは、連続複利や成長率の計算で頻繁に登場します。セットで覚えておくと便利ですよ。</p>



<h3 class="wp-block-heading"><span id="toc11">数学的に見た逆関数の意味</span></h3>



<p class="wp-block-paragraph">数学では <code>y = e^x</code> のグラフと <code>y = ln(x)</code> のグラフが、<code>y = x</code> の直線に対して対称になります。Excel上でも <code>=EXP(A1)</code> と <code>=LN(A1)</code> を別々の列に並べると、互いに値を打ち消し合うことが確認できます。</p>



<pre class="wp-block-code"><code>A1セルに 5 を入力した場合
=LN(EXP(A1)) → 5
=EXP(LN(A1)) → 5</code></pre>



<p class="wp-block-paragraph">入力値そのものが返るのが、逆関数の証拠です。</p>



<h2 class="wp-block-heading"><span id="toc12">LN関数の実務活用パターン</span></h2>



<p class="wp-block-paragraph">LN関数は理論的な関数に見えますが、実務でも活躍する場面があります。3つの代表例を紹介します。</p>



<h3 class="wp-block-heading"><span id="toc13">パターン1: 連続複利で目標到達年数を計算する</span></h3>



<p class="wp-block-paragraph">通常の複利は「年1回」や「月1回」など決まったタイミングで利息がつきます。一方、連続複利は「瞬間ごとに利息が発生する」という理論上の計算方法です。金融理論や年金計算で使われる考え方ですよ。</p>



<p class="wp-block-paragraph">連続複利の公式は次のとおりです。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>将来額 = 元本 × EXP(年利 × 年数)</p></blockquote>



<p class="wp-block-paragraph">逆に「目標額に達するまで何年かかるか」を求めるには、LN関数を使います。</p>



<pre class="wp-block-code"><code>=LN(目標額/元本) / 年利</code></pre>



<p class="wp-block-paragraph">たとえば元本100万円、年利3%で200万円に到達する年数は次のように計算します。</p>



<pre class="wp-block-code"><code>=LN(2000000/1000000) / 0.03</code></pre>



<p class="wp-block-paragraph">LN(2) ÷ 0.03 ≒ 0.693 ÷ 0.03 ≒ <strong>23.1年</strong> です。</p>



<p class="wp-block-paragraph">通常複利の場合は <code>=LOG(2,1.03)</code> で約23.4年。連続複利のほうがわずかに短くなります。この差が連続複利の特徴ですよ。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>「資産が2倍になる年数」を概算する <strong>72の法則</strong> をご存じですか。72÷年利%でおおよその倍増年数が求まります。年利3%なら72÷3=24年。LN関数で計算した23.1年とほぼ一致します。72の法則は <code>LN(2)≒0.693</code> に100を掛けて約69としたものを、計算しやすく72に丸めた近似式なんです。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc14">パターン2: 対数リターンで成長率を比較する</span></h3>



<p class="wp-block-paragraph">売上が「100万→150万→200万」と推移した場合、前年比は50%→33%と変動します。伸び幅は同じ50万円なのに、比率が変わるので比較しにくいですよね。</p>



<p class="wp-block-paragraph">こうしたケースでは、対数変換（対数リターン）を使うと扱いやすくなります。</p>



<pre class="wp-block-code"><code>=LN(今期の売上 / 前期の売上)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>期間</th><th>売上</th><th>前年比</th><th>LN(今期/前期)</th></tr></thead><tbody><tr><td>1年目</td><td>100万</td><td>—</td><td>—</td></tr><tr><td>2年目</td><td>150万</td><td>50%</td><td>0.405</td></tr><tr><td>3年目</td><td>200万</td><td>33%</td><td>0.288</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">対数リターンの利点は「加法性」です。2年分の対数リターンを足すと、全期間の対数リターンになります。0.405 + 0.288 = 0.693で、これはLN(200/100)と一致します。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>対数リターンは金融分野で「ログ収益率」とも呼ばれます。短期間（1日や1週間）の収益率では、通常リターンと対数リターンの差はわずか1%以下です。一方、年率換算や複数年の合算では対数リターンのほうが計算しやすく、株式分析やリスク評価でよく使われます。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc15">パターン3: 散布図に対数軸を当てて分析する</span></h3>



<p class="wp-block-paragraph">売上と広告費、人口と都市数など、桁の幅が大きいデータをそのまま散布図にすると、小さい値が見えなくなります。</p>



<p class="wp-block-paragraph">そこで、片方または両方の軸をLN関数で変換してからグラフを描くと、傾向が明確になります。</p>



<pre class="wp-block-code"><code>B列: 元データ（広告費）
C列: =LN(B2)  ← 対数変換した値</code></pre>



<p class="wp-block-paragraph">C列を散布図のX軸に使うと、データのばらつきが圧縮されて、回帰直線が引きやすくなりますよ。</p>



<p class="wp-block-paragraph">統計分析では、<code>y = a <em> x^b</code> という冪乗（べきじょう）関係を <code>LN(y) = LN(a) + b </em> LN(x)</code> という直線関係に変換するのに使います。Excel上では<a href="https://mashukabu.com/excel-function-howto-use-slope/">SLOPE関数</a>と組み合わせると、傾きbを直接求められます。</p>



<h2 class="wp-block-heading"><span id="toc16">よくあるエラーと対処法</span></h2>



<p class="wp-block-paragraph">LN関数で発生しやすいエラーは主に2種類です。</p>



<h3 class="wp-block-heading"><span id="toc17">#NUM!エラー</span></h3>



<p class="wp-block-paragraph">数値に0または負の値を指定すると発生します。自然対数は正の数に対してのみ定義されるためです。</p>



<figure class="wp-block-table"><table><thead><tr><th>原因</th><th>数式例</th><th>対処法</th></tr></thead><tbody><tr><td>数値が0</td><td>=LN(0)</td><td>0の対数は定義されない</td></tr><tr><td>数値が負</td><td>=LN(-5)</td><td>正の数を指定する</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">データが未入力のセルを参照してしまうケースが多いです。IF関数で事前チェックすると安全ですよ。</p>



<pre class="wp-block-code"><code>=IF(A1&gt;0, LN(A1), &quot;入力エラー&quot;)</code></pre>



<h3 class="wp-block-heading"><span id="toc18">#VALUE!エラー</span></h3>



<p class="wp-block-paragraph">数値にテキストが入っている場合に発生します。</p>



<pre class="wp-block-code"><code>=LN(&quot;abc&quot;)  → #VALUE!エラー</code></pre>



<p class="wp-block-paragraph">セル参照先に全角数字や単位付きの文字列（「100個」など）がないか確認してください。文字列形式の数値はVALUE関数で変換できます。</p>



<pre class="wp-block-code"><code>=LN(VALUE(A1))</code></pre>



<h3 class="wp-block-heading"><span id="toc19">IFERRORでエラーを一括回避する</span></h3>



<p class="wp-block-paragraph">データの一括処理では、IFERROR関数（エラー時に代替値を返す関数）で囲むと安全です。</p>



<pre class="wp-block-code"><code>=IFERROR(LN(A1), &quot;&quot;)</code></pre>



<p class="wp-block-paragraph">エラーが出たセルは空欄になるので、集計に影響しません。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>WARNING</strong></p><p>売上やアクセス数の対数を取るとき、月によって0が入る可能性があります。<code>=LN(売上)</code> がエラーになると<a href="https://mashukabu.com/excel-function-howto-use-average/">AVERAGE関数</a>の結果も巻き込まれて崩れます。<code>=LN(売上+1)</code> のように1を足してから対数を取る「<strong>log(x+1)変換</strong>」が、データ分析の現場ではよく使われますよ。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc20">LN関数とSUMPRODUCT・配列関数の組み合わせ</span></h2>



<p class="wp-block-paragraph">複数のセルにまとめてLN関数を適用したい場合、Microsoft 365では配列を直接渡せます。</p>



<pre class="wp-block-code"><code>=LN(A2:A10)</code></pre>



<p class="wp-block-paragraph">スピル機能で結果が10セルに展開されます。Excel 2019以前を使っている場合は、配列数式として <code>Ctrl+Shift+Enter</code> で確定するか、各セルに個別に入力してください。</p>



<p class="wp-block-paragraph">幾何平均（複数の値を掛け合わせた平方根）を対数で求めるテクニックもあります。</p>



<pre class="wp-block-code"><code>=EXP(AVERAGE(LN(A2:A10)))</code></pre>



<p class="wp-block-paragraph">各値を対数化 → 平均 → 元に戻す、という3段階で幾何平均が求まります。Excel標準の<a href="https://mashukabu.com/excel-function-howto-use-geomean/">GEOMEAN関数</a>と同じ結果になりますよ。</p>



<h2 class="wp-block-heading"><span id="toc21">まとめ</span></h2>



<p class="wp-block-paragraph">LN関数のポイントを振り返ります。</p>



<ul class="wp-block-list"><li>LN関数はe（≒2.718）を底とする<strong>自然対数</strong>を返す関数</li><li>構文は <code>=LN(数値)</code> で、引数は1つだけ</li><li><a href="https://mashukabu.com/excel-function-howto-use-exp/">EXP関数</a>と逆関数の関係。LNで対数にした値はEXPで元に戻せる</li><li>連続複利の年数計算、対数リターンによる成長率比較、回帰分析の前処理など実務でも活躍</li><li>0以下の値を指定すると#NUM!エラー。IF関数やIFERRORで事前チェックがおすすめ</li><li>底が10の対数なら<a href="https://mashukabu.com/excel-function-howto-use-log10/">LOG10関数</a>、底を自由に指定したいなら<a href="https://mashukabu.com/excel-function-howto-use-log/">LOG関数</a>を使う</li></ul>



<p class="wp-block-paragraph">まずは <code>=LN(1)</code> が0を返すことを確認するところから試してみてください。EXP関数とセットで覚えておくと、対数の計算がぐっと楽になりますよ。</p>



<h3 class="wp-block-heading"><span id="toc22">関連記事</span></h3>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-howto-use-exp/">EXP関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-log/">LOG関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-log10/">LOG10関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-power/">POWER関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-sqrt/">SQRT関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-alphabetical-order/">Excel関数一覧（アルファベット順）</a></li><li><a href="https://mashukabu.com/excel-function-list-by-function/">Excel関数一覧（機能別）</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-ln/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
