<?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%A1%8C%E5%88%97%E5%BC%8F/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Sat, 16 May 2026 21:35:22 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.3</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>スプレッドシートのMDETERM関数の使い方｜行列式</title>
		<link>https://mashukabu.com/spreadsheet-mdeterm-function/</link>
					<comments>https://mashukabu.com/spreadsheet-mdeterm-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Thu, 26 Mar 2026 11:44:08 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[MDETERM関数]]></category>
		<category><![CDATA[MINVERSE関数]]></category>
		<category><![CDATA[正方行列]]></category>
		<category><![CDATA[行列式]]></category>
		<category><![CDATA[行列計算]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=5293</guid>

					<description><![CDATA[スプレッドシートのMDETERM関数で正方行列の行列式を求める方法を解説。2×2・3×3・4×4の計算例、特異行列の判定、連立方程式の解の存在判定、IF関数や配列定数との組み合わせ、MINVERSE・MMULTとの連携、よくあるエラーと対処法まで実務目線で紹介します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">スプレッドシートで行列式を手計算しようとすると、2×2行列でも面倒ですよね。3×3以上になると符号や項の組み合わせを間違えやすく、せっかく計算しても答えが合わないこともしばしばあります。</p>



<p class="wp-block-paragraph">そんなときに役立つのが<strong>MDETERM関数</strong>です。正方行列を範囲指定するだけで、行列式（determinant）をワンクリックで求められます。行列式が0かどうかが分かれば、逆行列の有無や連立方程式の解の存在もすぐに判定できますよ。</p>



<p class="wp-block-paragraph">この記事では、スプレッドシートのMDETERM関数の基本構文から、2×2・3×3・4×4の具体例、よくあるエラーと対処法、MINVERSE関数やMMULT関数との連携、IF関数を使った自動判定まで、実務でそのまま使えるレベルで解説していきます。</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">スプレッドシートのMDETERM関数とは？</a></li><li><a href="#toc2" tabindex="0">MDETERM関数の書き方</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">MDETERM関数の基本的な使い方</a><ol><li><a href="#toc6" tabindex="0">2×2行列の行列式を求める</a></li><li><a href="#toc7" tabindex="0">3×3行列の行列式を求める</a></li><li><a href="#toc8" tabindex="0">4×4以上の行列の行列式を求める</a></li></ol></li><li><a href="#toc9" tabindex="0">実践的な使い方・応用例</a><ol><li><a href="#toc10" tabindex="0">行列式が0かどうかで逆行列の存在を判定する</a></li><li><a href="#toc11" tabindex="0">連立方程式の解の存在を判定する</a></li><li><a href="#toc12" tabindex="0">MDETERM関数とMINVERSE関数を組み合わせる</a></li><li><a href="#toc13" tabindex="0">行列式の符号で向きの反転を判定する</a></li><li><a href="#toc14" tabindex="0">データ分析での多重共線性チェック</a></li><li><a href="#toc15" tabindex="0">IF + IFERROR との組み合わせで堅牢にする</a></li></ol></li><li><a href="#toc16" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc17" tabindex="0">#VALUE! エラー</a></li><li><a href="#toc18" tabindex="0">微小な値が返るときの対処</a></li></ol></li><li><a href="#toc19" tabindex="0">関連する行列関数との使い分け</a></li><li><a href="#toc20" tabindex="0">よくある質問（FAQ）</a><ol><li><a href="#toc21" tabindex="0">Q1. MDETERM関数はExcelでも使えますか？</a></li><li><a href="#toc22" tabindex="0">Q2. 行列式が極端に小さい値（1E-15など）が返ります。これは0と見なしていいですか？</a></li><li><a href="#toc23" tabindex="0">Q3. 1×1行列の行列式は計算できますか？</a></li><li><a href="#toc24" tabindex="0">Q4. 行列のサイズが大きい（50×50など）と動作が遅くなりますか？</a></li><li><a href="#toc25" tabindex="0">Q5. 行列式の値が負になりました。これは何か意味がありますか？</a></li></ol></li><li><a href="#toc26" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

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



<p class="wp-block-paragraph">MDETERM関数は、<strong>正方行列（行数と列数が等しい行列）の行列式を返す関数</strong>です。</p>



<p class="wp-block-paragraph">読み方は「<strong>マトリックス ディターミナント</strong>」。「Matrix」は行列、「Determinant」は行列式を意味します。覚えにくければ「<strong>M</strong>atrix <strong>DETERM</strong>inant」と分解して覚えると忘れません。</p>



<p class="wp-block-paragraph">行列式は、行列全体を1つの数値（スカラー値）で表したものです。一見すると地味な値ですが、行列の性質を測る重要な指標として線形代数で大活躍します。</p>



<p class="wp-block-paragraph">具体的には、行列式は次のような情報を持っています。</p>



<ul class="wp-block-list"><li>行列が<strong>逆行列を持つかどうか</strong>の判定（0なら持たない）</li><li>連立方程式に<strong>一意の解が存在するか</strong>の判定（0なら一意の解なし）</li><li>行列が表す<strong>線形変換の拡大率</strong>（2D・3Dグラフィックスでよく使われる）</li><li>行列の<strong>線形独立性</strong>（行や列同士が比例関係にないか）</li></ul>



<p class="wp-block-paragraph">数学や統計、エンジニアリング系の計算で登場することが多い関数ですが、使い方自体はシンプルです。セル範囲を指定するだけで一発で結果が返ってきますよ。</p>



<h2 class="wp-block-heading"><span id="toc2">MDETERM関数の書き方</span></h2>



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



<pre class="wp-block-code"><code>=MDETERM(正方行列)</code></pre>



<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つだけなので、覚えやすいですね。MAX関数やSUM関数のように複数引数を取らないので、書き間違いも起こりにくいです。</p>



<p class="wp-block-paragraph">セル範囲（例: <code>A1:B2</code>）のほか、配列定数（例: <code>{1,2;3,4}</code>）も指定できます。配列定数では、<strong>カンマが列区切り、セミコロンが行区切り</strong>です。スプレッドシートの言語設定によってはカンマがスラッシュに置き換わることがあるので、エラーが出たら区切り文字を切り替えてみてください。</p>



<p class="wp-block-paragraph">なお、Excel版の同名関数とほぼ同じ仕様ですが、スプレッドシートでは配列数式として自動で展開されるため、<code>Ctrl+Shift+Enter</code> は不要です。普通にEnterで確定できます。</p>



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



<h3 class="wp-block-heading"><span id="toc6">2×2行列の行列式を求める</span></h3>



<p class="wp-block-paragraph">まずは最もシンプルな2×2行列から試してみましょう。</p>



<p class="wp-block-paragraph">セルA1:B2に以下のデータが入っているとします。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>A</th><th>B</th></tr></thead><tbody><tr><td>1</td><td>3</td><td>6</td></tr><tr><td>2</td><td>1</td><td>1</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">任意のセルに次の数式を入力します。</p>



<pre class="wp-block-code"><code>=MDETERM(A1:B2)</code></pre>



<p class="wp-block-paragraph">結果は <strong>-3</strong> になります。</p>



<p class="wp-block-paragraph">これは手計算でも確認できます。2×2行列の行列式は「<strong>ad − bc</strong>」の公式で求められます。左上 × 右下 − 右上 × 左下と覚えると分かりやすいです。</p>



<pre class="wp-block-code"><code>3 × 1 − 6 × 1 = 3 − 6 = −3</code></pre>



<p class="wp-block-paragraph">関数の結果と一致しましたね。</p>



<p class="wp-block-paragraph">配列定数を使って直接入力する方法もあります。セルに行列データを置かずに、その場で計算したいときに便利です。</p>



<pre class="wp-block-code"><code>=MDETERM({3,6;1,1})</code></pre>



<p class="wp-block-paragraph">こちらも同じく <strong>-3</strong> が返ります。アドホックに行列式を確認したいときは、配列定数の方が手早いですよ。</p>



<h3 class="wp-block-heading"><span id="toc7">3×3行列の行列式を求める</span></h3>



<p class="wp-block-paragraph">次に3×3行列の例を見てみましょう。</p>



<p class="wp-block-paragraph">セルA1:C3に以下のデータが入っているとします。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>A</th><th>B</th><th>C</th></tr></thead><tbody><tr><td>1</td><td>3</td><td>6</td><td>1</td></tr><tr><td>2</td><td>1</td><td>1</td><td>0</td></tr><tr><td>3</td><td>3</td><td>10</td><td>2</td></tr></tbody></table></figure>



<pre class="wp-block-code"><code>=MDETERM(A1:C3)</code></pre>



<p class="wp-block-paragraph">結果は <strong>1</strong> になります。</p>



<p class="wp-block-paragraph">3×3行列の行列式は「<strong>サラスの公式</strong>」で手計算できます。1行目を基準に余因子展開すると次のとおりです。</p>



<pre class="wp-block-code"><code>3×(1×2 − 0×10) − 6×(1×2 − 0×3) + 1×(1×10 − 1×3)
= 3×(2 − 0) − 6×(2 − 0) + 1×(10 − 3)
= 6 − 12 + 7
= 1</code></pre>



<p class="wp-block-paragraph">途中で符号を間違えやすいので、3×3以上は素直にMDETERM関数に任せるのが安心です。</p>



<h3 class="wp-block-heading"><span id="toc8">4×4以上の行列の行列式を求める</span></h3>



<p class="wp-block-paragraph">4×4行列になると、手計算ではほぼ無理ゲーです（展開項が24個になります）。MDETERM関数の真価はここで発揮されます。</p>



<p class="wp-block-paragraph">たとえば次のような4×4行列を考えてみましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>A</th><th>B</th><th>C</th><th>D</th></tr></thead><tbody><tr><td>1</td><td>1</td><td>2</td><td>0</td><td>1</td></tr><tr><td>2</td><td>0</td><td>1</td><td>3</td><td>2</td></tr><tr><td>3</td><td>2</td><td>0</td><td>1</td><td>1</td></tr><tr><td>4</td><td>1</td><td>1</td><td>0</td><td>2</td></tr></tbody></table></figure>



<pre class="wp-block-code"><code>=MDETERM(A1:D4)</code></pre>



<p class="wp-block-paragraph">結果は <strong>3</strong> になります。手計算で同じ値にたどり着くには30分以上かかるところを、関数なら一瞬です。</p>



<p class="wp-block-paragraph">スプレッドシートでは理論上、最大 73×73 程度の行列までは扱えるとされています。実務では4×4〜10×10程度までが現実的な範囲です。</p>



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



<h3 class="wp-block-heading"><span id="toc10">行列式が0かどうかで逆行列の存在を判定する</span></h3>



<p class="wp-block-paragraph">行列式が0の行列は「<strong>特異行列（singular matrix）</strong>」と呼ばれます。特異行列には<strong>逆行列が存在しません</strong>。</p>



<p class="wp-block-paragraph">たとえば、以下のような行列を考えてみましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>A</th><th>B</th></tr></thead><tbody><tr><td>1</td><td>2</td><td>4</td></tr><tr><td>2</td><td>1</td><td>2</td></tr></tbody></table></figure>



<pre class="wp-block-code"><code>=MDETERM(A1:B2)</code></pre>



<p class="wp-block-paragraph">結果は <strong>0</strong> になります（2×2 − 4×1 = 0）。</p>



<p class="wp-block-paragraph">よく見ると、2行目が1行目のちょうど半分になっていますよね。このように<strong>行同士（または列同士）が比例関係にある行列は特異行列</strong>になります。データに「実質的に同じ情報」が含まれているとも言えます。</p>



<p class="wp-block-paragraph">逆行列が必要な計算の前に、MDETERM関数で行列式を確認しておくとエラーを未然に防げますよ。回帰分析で説明変数同士に強い相関がある場合（多重共線性）も、行列式が0に近づきます。</p>



<h3 class="wp-block-heading"><span id="toc11">連立方程式の解の存在を判定する</span></h3>



<p class="wp-block-paragraph">連立方程式は、係数を行列にまとめることで解の存在を判定できます。</p>



<p class="wp-block-paragraph">たとえば、次の連立方程式を考えます。</p>



<pre class="wp-block-code"><code>2x + 3y = 8
4x + 6y = 16</code></pre>



<p class="wp-block-paragraph">係数行列は次のとおりです。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>A</th><th>B</th></tr></thead><tbody><tr><td>1</td><td>2</td><td>3</td></tr><tr><td>2</td><td>4</td><td>6</td></tr></tbody></table></figure>



<pre class="wp-block-code"><code>=MDETERM(A1:B2)</code></pre>



<p class="wp-block-paragraph">結果は <strong>0</strong> です（2×6 − 3×4 = 0）。</p>



<p class="wp-block-paragraph">行列式が0ということは、この連立方程式には「<strong>一意の解が存在しない</strong>」ことを意味します。実際に2つ目の式は1つ目の式の2倍なので、独立した情報を持っていません。</p>



<p class="wp-block-paragraph">IF関数と組み合わせれば、判定を自動化できます。</p>



<pre class="wp-block-code"><code>=IF(MDETERM(A1:B2)=0, &quot;一意の解なし&quot;, &quot;一意の解あり&quot;)</code></pre>



<p class="wp-block-paragraph">複数の連立方程式をシート上で同時にチェックしたいときに便利です。プロジェクト管理やシミュレーションの前処理で重宝しますよ。</p>



<h3 class="wp-block-heading"><span id="toc12">MDETERM関数とMINVERSE関数を組み合わせる</span></h3>



<p class="wp-block-paragraph">逆行列を求める<a href="https://mashukabu.com/spreadsheet-minverse-function/">MINVERSE関数</a>は、行列式が0だと <code>#NUM!</code> エラーになります。事前にMDETERM関数でチェックしておくと、エラーで止まらず安全に処理できます。</p>



<pre class="wp-block-code"><code>=IF(MDETERM(A1:C3)&lt;&gt;0, MINVERSE(A1:C3), &quot;逆行列なし&quot;)</code></pre>



<p class="wp-block-paragraph">行列式が0でなければ逆行列を計算し、0ならメッセージを表示します。</p>



<p class="wp-block-paragraph">さらに、行列式と逆行列・<a href="https://mashukabu.com/excel-function-howto-use-mmult/">MMULT関数</a>を組み合わせれば、<strong>連立方程式を一括で解く</strong>こともできます。Ax = b の解は x = A⁻¹b なので、次のように書けます。</p>



<pre class="wp-block-code"><code>=IF(MDETERM(A1:C3)&lt;&gt;0, MMULT(MINVERSE(A1:C3), E1:E3), &quot;解なし&quot;)</code></pre>



<p class="wp-block-paragraph">3変数の連立方程式が、たった1つの数式で解けるのは爽快ですね。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>MDETERM関数の計算精度は約16桁です。理論上は0になる行列式でも、<code>1E-16</code> 程度の微小な値が返ることがあります（浮動小数点演算の宿命です）。厳密に判定したい場合は <code>=ROUND(MDETERM(A1:C3), 10)=0</code> のように丸めてから比較するか、<code>=ABS(MDETERM(A1:C3))<1E-10</code> のように許容誤差付きで判定してみてください。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc13">行列式の符号で向きの反転を判定する</span></h3>



<p class="wp-block-paragraph">2D・3Dグラフィックスやデータの座標変換では、<strong>行列式の符号</strong>が重要になります。</p>



<ul class="wp-block-list"><li>行列式が <strong>正</strong>: 元の向きを保持した変換</li><li>行列式が <strong>負</strong>: 鏡像反転を含む変換</li><li>行列式の <strong>絶対値</strong>: 面積（2D）または体積（3D）の拡大率</li></ul>



<p class="wp-block-paragraph">たとえば、ある2次元変換行列の行列式が <code>-2</code> だった場合、「向きが反転し、面積が2倍になる変換」だと一目で分かります。CADや図形処理を扱う場面では、変換結果を試す前に行列式で挙動を予測できるのは大きなメリットです。</p>



<h3 class="wp-block-heading"><span id="toc14">データ分析での多重共線性チェック</span></h3>



<p class="wp-block-paragraph">回帰分析やクラスター分析を行う際、<strong>説明変数同士に強い相関がある</strong>と結果が不安定になります。これを「多重共線性」と呼びます。</p>



<p class="wp-block-paragraph">説明変数の相関行列の行列式をMDETERM関数で計算すると、その状態を簡易チェックできます。</p>



<pre class="wp-block-code"><code>=MDETERM(相関行列の範囲)</code></pre>



<p class="wp-block-paragraph">行列式が <strong>0に近いほど多重共線性が強い</strong> ことを意味します。経験的には <code>0.1</code> を下回ると要注意、<code>0.01</code> を下回ると重大な問題と判断されることが多いです。回帰分析の前処理として、説明変数の数を絞ったり、主成分分析で変数を合成したりする判断材料として使えますよ。</p>



<h3 class="wp-block-heading"><span id="toc15">IF + IFERROR との組み合わせで堅牢にする</span></h3>



<p class="wp-block-paragraph">実務で使うときは、エラー処理も組み合わせると安心です。<code>IFERROR</code> で囲んでおけば、不正なデータが入ってもシートが壊れません。</p>



<pre class="wp-block-code"><code>=IFERROR(IF(ABS(MDETERM(A1:C3))&lt;1E-10, &quot;特異行列&quot;, MDETERM(A1:C3)), &quot;計算不可&quot;)</code></pre>



<p class="wp-block-paragraph">これで「特異行列なら警告」「数値以外なら計算不可」「それ以外は数値を表示」という3パターンを1つの数式で表現できます。</p>



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



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



<p class="wp-block-paragraph"><code>#VALUE!</code> エラーが出る原因は主に3つあります。</p>



<p class="wp-block-paragraph"><strong>原因1: 正方行列でない</strong></p>



<p class="wp-block-paragraph">行数と列数が異なるセル範囲を指定するとエラーになります。</p>



<pre class="wp-block-code"><code>=MDETERM(A1:C2)  → #VALUE!（2行3列は正方行列でない）</code></pre>



<p class="wp-block-paragraph">指定するセル範囲が正方形（2×2、3×3、4×4 など）になっているか確認してください。行と列の数を数えて一致しているか、まずチェックしましょう。</p>



<p class="wp-block-paragraph"><strong>原因2: 数値以外のセルが含まれている</strong></p>



<p class="wp-block-paragraph">セル範囲に空白セルや文字列が含まれている場合もエラーになります。</p>



<pre class="wp-block-code"><code>=MDETERM(A1:B2)  → #VALUE!（A2が空白の場合）</code></pre>



<p class="wp-block-paragraph">すべてのセルに数値が入力されているかチェックしましょう。空白セルがある場合は0を入力すれば解決します。<code>ISBLANK</code> で事前に空白チェックを入れておくと安心です。</p>



<p class="wp-block-paragraph"><strong>原因3: 全角数字が混ざっている</strong></p>



<p class="wp-block-paragraph">「1」（半角）ではなく「１」（全角）が混ざっていると、見た目は数値でも文字列として扱われエラーになります。<code>VALUE</code> 関数で変換するか、置換機能で全角→半角に揃えてください。</p>



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>主な原因</th><th>対処法</th></tr></thead><tbody><tr><td><code>#VALUE!</code></td><td>行数と列数が不一致</td><td>正方行列（N×N）のセル範囲を指定する</td></tr><tr><td><code>#VALUE!</code></td><td>空白・文字列を含む</td><td>すべてのセルに数値を入力する</td></tr><tr><td><code>#VALUE!</code></td><td>全角数字が混在</td><td>半角数字に統一する</td></tr><tr><td><code>#NUM!</code></td><td>計算オーバーフロー</td><td>値のスケールを揃える（正規化する）</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc18">微小な値が返るときの対処</span></h3>



<p class="wp-block-paragraph">特異行列のはずなのに <code>1E-16</code> のような微小値が返ることがあります。これは浮動小数点演算による誤差で、関数のバグではありません。</p>



<pre class="wp-block-code"><code>=ROUND(MDETERM(A1:C3), 10)</code></pre>



<p class="wp-block-paragraph">このように <code>ROUND</code> で適切な桁に丸めてから判定すれば、現実的な精度で0扱いにできます。</p>



<h2 class="wp-block-heading"><span id="toc19">関連する行列関数との使い分け</span></h2>



<p class="wp-block-paragraph">スプレッドシートには、MDETERM関数以外にも行列計算に使える関数があります。組み合わせて使うことで、線形代数の計算をシート上で完結させられます。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>機能</th><th>用途</th></tr></thead><tbody><tr><td>MDETERM</td><td>行列式を返す</td><td>逆行列の存在判定、連立方程式の解の判定</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-minverse-function/">MINVERSE</a></td><td>逆行列を返す</td><td>連立方程式を解く、変換行列の逆変換</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-mmult/">MMULT</a></td><td>行列の積を返す</td><td>座標変換、重み付き合計の一括計算</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-transpose-function/">TRANSPOSE</a></td><td>行と列を入れ替える</td><td>表の縦横変換、データ整形</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">行列計算の基本的な流れは次のとおりです。</p>



<ol class="wp-block-list"><li><strong>MDETERM</strong> で行列式を計算し、0でないことを確認</li><li>0でなければ <strong>MINVERSE</strong> で逆行列を求める</li><li><strong>MMULT</strong> で逆行列と定数項ベクトルを掛けて解を得る</li><li>必要に応じて <strong>TRANSPOSE</strong> で結果を整形する</li></ol>



<p class="wp-block-paragraph">この4つを覚えておけば、スプレッドシート上で線形代数の基本操作はほぼ網羅できます。</p>



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



<h3 class="wp-block-heading"><span id="toc21">Q1. MDETERM関数はExcelでも使えますか？</span></h3>



<p class="wp-block-paragraph">はい、Excelにも全く同じ名前・同じ仕様のMDETERM関数があります。スプレッドシートとExcelで数式を相互コピーしても問題なく動作します。ただし、Excelでは古いバージョン（2019以前）の場合、配列数式として <code>Ctrl+Shift+Enter</code> で確定する必要があります。Microsoft 365 / Excel 2021以降はスプレッドシートと同じく通常のEnterでOKです。</p>



<h3 class="wp-block-heading"><span id="toc22">Q2. 行列式が極端に小さい値（1E-15など）が返ります。これは0と見なしていいですか？</span></h3>



<p class="wp-block-paragraph">はい、ほぼ0と見なして問題ありません。これは浮動小数点演算の丸め誤差によるもので、理論上は0になる行列式が微小な非ゼロ値として返るケースです。<code>=ABS(MDETERM(A1:C3))<1E-10</code> のように許容誤差付きで判定するのが実務的です。厳密性が必要な場合は、行列の値を整数や分数で扱える別ツール（Pythonのsympy等）を検討してください。</p>



<h3 class="wp-block-heading"><span id="toc23">Q3. 1×1行列の行列式は計算できますか？</span></h3>



<p class="wp-block-paragraph">はい、計算できます。1×1行列の行列式は、その唯一の要素そのものです。たとえば <code>=MDETERM(A1:A1)</code> でセルA1の値がそのまま返ります。実用性は低いですが、関数の挙動を確認するときの参考になります。</p>



<h3 class="wp-block-heading"><span id="toc24">Q4. 行列のサイズが大きい（50×50など）と動作が遅くなりますか？</span></h3>



<p class="wp-block-paragraph">体感できるほど遅くはなりません。MDETERM関数は内部で効率的なアルゴリズム（LU分解など）を使っているため、50×50程度の行列でも一瞬で結果が返ります。ただし、行列のサイズが大きくなるほど浮動小数点誤差が累積しやすくなる点には注意してください。</p>



<h3 class="wp-block-heading"><span id="toc25">Q5. 行列式の値が負になりました。これは何か意味がありますか？</span></h3>



<p class="wp-block-paragraph">はい、意味があります。<strong>行列式の符号は、その行列が表す線形変換の「向き」を示しています</strong>。負の値は鏡像反転を含む変換であることを意味します。絶対値は面積（2D）または体積（3D）の拡大率を表します。たとえば行列式が <code>-3</code> なら「向きが反転し、面積が3倍になる変換」と読み取れます。グラフィックスや座標変換で役立つ性質です。</p>



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



<p class="wp-block-paragraph">MDETERM関数は、正方行列の行列式を求める関数です。シンプルですが、線形代数の世界では中心的な役割を果たします。</p>



<ul class="wp-block-list"><li>構文は <code>=MDETERM(正方行列)</code> で、引数は1つだけ</li><li>2×2行列なら「ad − bc」、3×3以上はサラスの公式や余因子展開で計算される</li><li>行列式が <strong>0</strong> → 特異行列（逆行列が存在しない）</li><li>行列式の <strong>符号</strong> → 線形変換の向き反転を示す</li><li>連立方程式の解の存在判定や、回帰分析の多重共線性チェックにも活用できる</li><li><code>#VALUE!</code> エラーは正方行列でない、または数値以外のセルが原因</li><li>微小値はROUND関数やABS関数で丸めて判定する</li></ul>



<p class="wp-block-paragraph">数学的な関数ではありますが、使い方自体はセル範囲を指定するだけなので難しくありません。逆行列・連立方程式・座標変換・統計分析など、行列を扱う場面でぜひ活用してみてください。MINVERSE関数やMMULT関数と組み合わせれば、スプレッドシート1枚で線形代数の主要な計算を完結できますよ。</p>



<p class="wp-block-paragraph">まずは身近な2×2行列で <code>=MDETERM(範囲)</code> を試して、結果が手計算の <code>ad − bc</code> と一致するか確認するところから始めるのがおすすめです。感覚をつかんだら、3×3・4×4と段階的にステップアップしていきましょう。慣れてくれば、複雑な線形代数の計算もスプレッドシート上でサクッとこなせるようになりますよ。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-mdeterm-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ExcelのMDETERM関数の使い方｜行列式を求めて逆行列の存在を確認する方法</title>
		<link>https://mashukabu.com/excel-function-howto-use-mdeterm/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-mdeterm/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Wed, 08 Feb 2023 09:00:00 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[MDETERM]]></category>
		<category><![CDATA[正方行列]]></category>
		<category><![CDATA[行列]]></category>
		<category><![CDATA[行列式]]></category>
		<category><![CDATA[逆行列]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=3278</guid>

					<description><![CDATA[ExcelのMDETERM関数で正方行列の行列式を求める方法を解説。構文・引数の基本から2x2・3x3行列の計算例、MINVERSE関数と組み合わせた逆行列の存在確認、連立方程式の解の有無判定、浮動小数点誤差の対処法まで実例付きで紹介します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「Excelで行列式を求めたいけど、どの関数を使えばいいの?」「行列式が0かどうかで逆行列が存在するか判定したい」と思ったことはありませんか。</p>



<p class="wp-block-paragraph">行列式の手計算は3&#215;3以上になると工程が増えて、計算ミスが起きやすいですよね。</p>



<p class="wp-block-paragraph">MDETERM関数を使えば、正方行列の行列式をワンステップで算出できます。さらにMINVERSE関数と組み合わせれば、逆行列が存在するかどうかの事前チェックにも活用できます。この記事では基本の使い方から実務的な応用まで、順を追って解説していきます。</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">MDETERM関数とは?</a></li><li><a href="#toc2" tabindex="0">MDETERM関数の書き方（構文と引数）</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">基本的な使い方</a><ol><li><a href="#toc6" tabindex="0">2&#215;2行列の行列式を求める</a></li><li><a href="#toc7" tabindex="0">3&#215;3行列の行列式を求める</a></li><li><a href="#toc8" tabindex="0">配列定数を直接指定する</a></li></ol></li><li><a href="#toc9" tabindex="0">実務で役立つ活用例</a><ol><li><a href="#toc10" tabindex="0">逆行列の存在確認に使う</a></li><li><a href="#toc11" tabindex="0">連立方程式の解の有無を判定する</a></li><li><a href="#toc12" tabindex="0">計算結果の検算に使う</a></li></ol></li><li><a href="#toc13" tabindex="0">よくあるエラーと対処法</a></li><li><a href="#toc14" tabindex="0">まとめ</a><ol><li><a href="#toc15" tabindex="0">関連する行列関数との使い分け</a></li></ol></li></ol>
    </div>
  </div>

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



<p class="wp-block-paragraph">MDETERM関数は、指定した正方行列（行数と列数が同じ行列）の<strong>行列式</strong>（determinant）を返す関数です。</p>



<ul class="wp-block-list"><li><strong>読み方</strong>: マトリックス・ディターミナント（Matrix Determinant）</li><li><strong>語源</strong>: 「M」はMatrix（行列）、「DETERM」はDeterminant（行列式）の略です</li><li><strong>対応バージョン</strong>: Excel 2003以降 / Microsoft 365</li></ul>



<p class="wp-block-paragraph">行列式とは、正方行列から計算される1つの数値のことです。行列式が0でなければ逆行列が存在し、0であれば逆行列は存在しません（このような行列を「特異行列」と呼びます）。</p>



<p class="wp-block-paragraph">行列式は数学・工学・統計の分野で幅広く使われていますが、Excelでの主な用途は次の2つです。</p>



<ul class="wp-block-list"><li>逆行列が存在するか（=連立方程式に解があるか）の判定</li><li>行列に関する各種計算の中間ステップ</li></ul>



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



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



<pre class="wp-block-code"><code>=MDETERM(配列)</code></pre>



<p class="wp-block-paragraph">MDETERM関数の引数は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"><strong>配列に指定できるもの</strong>:</p>



<ul class="wp-block-list"><li>セル範囲（例: B2:C3、B2:D4）</li><li>配列定数（例: <code>{1,2;3,4}</code>）</li></ul>



<p class="wp-block-paragraph"><strong>注意点</strong>:</p>



<ul class="wp-block-list"><li>行数と列数が異なる範囲を指定すると <code>#VALUE!</code> エラーになります</li><li>空白セルや文字列が含まれていると <code>#VALUE!</code> エラーになります</li><li>結果は1つの数値（スカラー値）なので、配列数式として入力する必要はありません</li></ul>



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



<h3 class="wp-block-heading"><span id="toc6">2&#215;2行列の行列式を求める</span></h3>



<p class="wp-block-paragraph">まずは最もシンプルな2&#215;2行列で試してみましょう。</p>



<p class="wp-block-paragraph">セルB2:C3に以下のような行列が入力されているとします。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>B</th><th>C</th></tr></thead><tbody><tr><td>2</td><td>4</td><td>7</td></tr><tr><td>3</td><td>2</td><td>6</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">行列式を求めるには、結果を表示したいセル（例: E2）に次の数式を入力します。</p>



<pre class="wp-block-code"><code>=MDETERM(B2:C3)</code></pre>



<p class="wp-block-paragraph">結果は <strong>10</strong> になります。</p>



<p class="wp-block-paragraph">2&#215;2行列の行列式は「ad &#8211; bc」の公式で手計算できます。上の例では <code>4×6 - 7×2 = 24 - 14 = 10</code> となり、MDETERM関数の結果と一致していますね。</p>



<p class="wp-block-paragraph">行列式が0でないので、この行列には逆行列が存在することもわかります。</p>



<h3 class="wp-block-heading"><span id="toc7">3&#215;3行列の行列式を求める</span></h3>



<p class="wp-block-paragraph">3&#215;3行列でも使い方は同じです。</p>



<p class="wp-block-paragraph">セルB2:D4に以下の行列が入力されている場合を考えます。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>B</th><th>C</th><th>D</th></tr></thead><tbody><tr><td>2</td><td>3</td><td>6</td><td>1</td></tr><tr><td>3</td><td>1</td><td>1</td><td>0</td></tr><tr><td>4</td><td>3</td><td>10</td><td>2</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">次の数式を入力します。</p>



<pre class="wp-block-code"><code>=MDETERM(B2:D4)</code></pre>



<p class="wp-block-paragraph">結果は <strong>1</strong> になります。</p>



<p class="wp-block-paragraph">3&#215;3以上の行列式の手計算は複雑になりますが、MDETERM関数なら一瞬で結果が出ます。手計算での検算方法を知りたい方のために補足すると、3&#215;3行列では「サラスの公式」を使って次のように展開します。</p>



<pre class="wp-block-code"><code>行列式 = a(ei-fh) - b(di-fg) + c(dh-eg)</code></pre>



<p class="wp-block-paragraph">上の例に当てはめると <code>3(1×2-0×10) - 6(1×2-0×3) + 1(1×10-1×3) = 6 - 12 + 7 = 1</code> となります。</p>



<h3 class="wp-block-heading"><span id="toc8">配列定数を直接指定する</span></h3>



<p class="wp-block-paragraph">セル範囲を使わず、数式の中に配列定数を直接書くこともできます。</p>



<pre class="wp-block-code"><code>=MDETERM({3,6;1,1})</code></pre>



<p class="wp-block-paragraph">結果は <strong>-3</strong> になります（3×1 &#8211; 6×1 = -3）。</p>



<p class="wp-block-paragraph">配列定数では、列の区切りにカンマ（,）、行の区切りにセミコロン（;）を使います。ちょっとした計算の確認には便利ですが、行列が大きくなるとセル範囲で指定する方が見やすくなります。</p>



<h2 class="wp-block-heading"><span id="toc9">実務で役立つ活用例</span></h2>



<h3 class="wp-block-heading"><span id="toc10">逆行列の存在確認に使う</span></h3>



<p class="wp-block-paragraph">MDETERM関数の最も実務的な使い道は、<a href="https://mashukabu.com/excel-function-howto-use-minverse/">MINVERSE関数</a>で逆行列を求める前の事前チェックです。</p>



<p class="wp-block-paragraph">逆行列が存在するのは、行列式が0でない場合だけです。行列式が0の行列（特異行列）にMINVERSE関数を使うと <code>#NUM!</code> エラーになってしまいます。事前にMDETERM関数で確認しておくとスムーズです。</p>



<p class="wp-block-paragraph">手順は次のとおりです。</p>



<ol class="wp-block-list"><li>MDETERM関数で行列式を求める</li></ol>



<pre class="wp-block-code"><code>=MDETERM(B2:D4)</code></pre>



<ol class="wp-block-list"><li>結果が0でなければ、MINVERSE関数で逆行列を求める</li></ol>



<pre class="wp-block-code"><code>=MINVERSE(B2:D4)</code></pre>



<ol class="wp-block-list"><li>結果が0なら、その行列には逆行列が存在しないとわかる</li></ol>



<p class="wp-block-paragraph">IF関数と組み合わせて自動判定する方法もあります。</p>



<pre class="wp-block-code"><code>=IF(MDETERM(B2:D4)=0,&quot;逆行列なし&quot;,&quot;逆行列あり&quot;)</code></pre>



<p class="wp-block-paragraph">このようにMDETERM関数を使えば、エラーを出す前に逆行列の有無を判定できます。</p>



<h3 class="wp-block-heading"><span id="toc11">連立方程式の解の有無を判定する</span></h3>



<p class="wp-block-paragraph">連立方程式を行列で表現したとき、係数行列の行列式が0でなければ「ただ1つの解がある」と判定できます。</p>



<p class="wp-block-paragraph">たとえば、次の連立方程式を考えます。</p>



<pre class="wp-block-code"><code>2x + 3y = 8
4x + 1y = 10</code></pre>



<p class="wp-block-paragraph">係数行列は <code>{2,3;4,1}</code> です。MDETERM関数で行列式を求めます。</p>



<pre class="wp-block-code"><code>=MDETERM({2,3;4,1})</code></pre>



<p class="wp-block-paragraph">結果は <strong>-10</strong>（0ではない）なので、この連立方程式にはただ1つの解が存在します。</p>



<p class="wp-block-paragraph">解が存在することを確認できたら、<a href="https://mashukabu.com/excel-function-howto-use-minverse/">MINVERSE関数とMMULT関数を組み合わせて実際の解を求められます</a>。</p>



<pre class="wp-block-code"><code>=MMULT(MINVERSE(B2:C3),E2:E3)</code></pre>



<p class="wp-block-paragraph">行列式が0の場合は「解なし」または「無数の解がある」ことを意味するので、連立方程式の立て方を見直す必要があります。</p>



<h3 class="wp-block-heading"><span id="toc12">計算結果の検算に使う</span></h3>



<p class="wp-block-paragraph">MINVERSE関数で求めた逆行列が正しいかどうかを検算するのにも、MDETERM関数が役立ちます。</p>



<p class="wp-block-paragraph">正方行列Aの行列式と、その逆行列A^(-1)の行列式の間には次の関係があります。</p>



<pre class="wp-block-code"><code>det(A) × det(A^(-1)) = 1</code></pre>



<p class="wp-block-paragraph">つまり、元の行列と逆行列の行列式を掛け合わせた結果が1（またはほぼ1）になれば、逆行列の計算が正しいと確認できます。</p>



<pre class="wp-block-code"><code>=MDETERM(B2:C3) * MDETERM(MINVERSE(B2:C3))</code></pre>



<p class="wp-block-paragraph">結果が1であれば計算は正確です。浮動小数点の関係で <code>0.9999999999999998</code> のような値になることがありますが、これは誤差の範囲内なので問題ありません。</p>



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



<p class="wp-block-paragraph">MDETERM関数で発生しやすいエラーと、その原因・対処法をまとめました。</p>



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td><code>#VALUE!</code></td><td>行数と列数が異なる範囲を指定した</td><td>正方行列（2&#215;2、3&#215;3など）になっているか確認する</td></tr><tr><td><code>#VALUE!</code></td><td>配列内に空白セルや文字列が含まれている</td><td>すべてのセルに数値が入力されているか確認する</td></tr><tr><td>結果が <code>1E-16</code> のような極小値</td><td>浮動小数点演算の誤差（本来0になるべき計算）</td><td>ROUND関数で丸める（例: <code>=ROUND(MDETERM(B2:C3),10)</code>）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><code>#VALUE!</code> エラーが出たときは、まず指定した範囲が正方形になっているかを確認してください。たとえば2行3列の範囲を指定していないか、途中に空白や文字が混じっていないかをチェックするのがポイントです。</p>



<p class="wp-block-paragraph">浮動小数点の誤差については補足が必要です。MDETERM関数は約16桁の精度で計算を行うため、本来0になるはずの行列式が <code>1E-16</code>（0.0000000000000001）のような極小の値になることがあります。この値を「0ではない」と判断してしまうと、存在しない逆行列を求めようとしてしまいます。</p>



<p class="wp-block-paragraph">実務では、行列式の絶対値が非常に小さい場合（たとえば <code>1E-10</code> 以下）は「実質的に0」として扱うのが安全です。</p>



<pre class="wp-block-code"><code>=IF(ABS(MDETERM(B2:D4))&lt;1E-10,&quot;特異行列（逆行列なし）&quot;,&quot;逆行列あり&quot;)</code></pre>



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



<p class="wp-block-paragraph">MDETERM関数は、Excelで正方行列の行列式を求めるための関数です。</p>



<p class="wp-block-paragraph">この記事のポイントをおさらいしましょう。</p>



<ul class="wp-block-list"><li>MDETERM関数の引数は「配列」の1つだけ。正方行列を指定する</li><li>行列式が0でなければ逆行列が存在し、0なら逆行列は存在しない（特異行列）</li><li>MINVERSE関数で逆行列を求める前の事前チェックに活用できる</li><li>連立方程式の解の有無の判定にも使える</li><li>浮動小数点誤差で <code>1E-16</code> のような極小値が出ることがあるので、ROUND関数やABS関数で対処する</li></ul>



<p class="wp-block-paragraph">行列式の計算は手作業だと3&#215;3以上で煩雑になりますが、MDETERM関数を使えば正確に素早く結果を得られます。<a href="https://mashukabu.com/excel-function-howto-use-minverse/">MINVERSE関数</a>と合わせて、行列計算の業務効率化にぜひ活用してみてください。</p>



<h3 class="wp-block-heading"><span id="toc15">関連する行列関数との使い分け</span></h3>



<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/excel-function-howto-use-mdeterm/">MDETERM</a></td><td>行列式を求める</td><td>正方行列</td><td>数値（スカラー）</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-minverse/">MINVERSE</a></td><td>逆行列を求める</td><td>正方行列</td><td>逆行列（配列）</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-mmult/">MMULT</a></td><td>行列の積を求める</td><td>2つの行列</td><td>積の行列（配列）</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-transpose/">TRANSPOSE</a></td><td>行と列を入れ替える</td><td>任意の配列</td><td>転置行列（配列）</td></tr></tbody></table></figure>



<ul class="wp-block-list"><li>逆行列が存在するか事前にチェックしたい → <strong>MDETERM</strong></li><li>逆行列を実際に求めたい → <strong>MINVERSE</strong>（事前にMDETERMで確認がおすすめ）</li><li>連立方程式を解きたい → <strong>MINVERSE + MMULT</strong></li><li>行と列を入れ替えたい → <strong>TRANSPOSE</strong></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-mdeterm/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
