<?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>MDETERM関数 &#8211; biz-tactics</title>
	<atom:link href="https://mashukabu.com/tag/mdeterm%e9%96%a2%e6%95%b0/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</generator>

<image>
	<url>https://mashukabu.com/wp-content/uploads/2022/04/cropped-site-icon-32x32.png</url>
	<title>MDETERM関数 &#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>スプレッドシートのMINVERSE関数の使い方｜逆行列</title>
		<link>https://mashukabu.com/spreadsheet-minverse-function/</link>
					<comments>https://mashukabu.com/spreadsheet-minverse-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Thu, 26 Mar 2026 11:44:03 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[MDETERM関数]]></category>
		<category><![CDATA[MINVERSE関数]]></category>
		<category><![CDATA[MMULT関数]]></category>
		<category><![CDATA[正方行列]]></category>
		<category><![CDATA[行列計算]]></category>
		<category><![CDATA[逆行列]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=5291</guid>

					<description><![CDATA[スプレッドシートのMINVERSE関数で正方行列の逆行列を求める方法を解説。2×2・3×3行列の計算例、MDETERM関数で特異行列を事前チェック、MMULT関数と組み合わせた連立方程式の解法まで紹介します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">スプレッドシートで逆行列を手計算するのは大変ですよね。2×2行列でも4つの要素を入れ替えたり符号を変えたりと手間がかかります。3×3以上になると、計算ミスのリスクもぐっと高まります。</p>



<p class="wp-block-paragraph">MINVERSE関数を使えば、正方行列の逆行列をセル範囲の指定だけで求められます。MMULT関数と組み合わせれば、連立方程式を解くこともできますよ。</p>



<p class="wp-block-paragraph">この記事では、スプレッドシートの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">スプレッドシートのMINVERSE関数とは？</a></li><li><a href="#toc2" tabindex="0">MINVERSE関数の書き方</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">MINVERSE関数の基本的な使い方</a><ol><li><a href="#toc6" tabindex="0">2×2行列の逆行列を求める</a></li><li><a href="#toc7" tabindex="0">3×3行列の逆行列を求める</a></li></ol></li><li><a href="#toc8" tabindex="0">実践的な使い方・応用例</a><ol><li><a href="#toc9" tabindex="0">MDETERM関数で特異行列かどうか事前チェックする</a></li><li><a href="#toc10" tabindex="0">MMULT関数と組み合わせて連立方程式を解く</a></li></ol></li><li><a href="#toc11" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc12" tabindex="0">#NUM! エラー</a></li><li><a href="#toc13" tabindex="0">#VALUE! エラー</a></li></ol></li><li><a href="#toc14" tabindex="0">関連する行列関数との使い分け</a></li><li><a href="#toc15" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

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



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



<p class="wp-block-paragraph">読み方は「<strong>マトリックス インバース</strong>」です。「Matrix」は行列、「Inverse」は逆を意味します。</p>



<p class="wp-block-paragraph">逆行列とは、元の行列にかけると単位行列（対角線が1、それ以外が0の行列）になる行列のことです。数学的には <code>A × A⁻¹ = I</code>（単位行列）という関係が成り立ちます。</p>



<p class="wp-block-paragraph">行列計算に使う関数ではありますが、使い方自体はシンプルです。セル範囲を指定するだけで結果が返ってきますよ。</p>



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



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



<pre class="wp-block-code"><code>=MINVERSE(正方行列)</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つだけなので、覚えやすいですね。</p>



<p class="wp-block-paragraph">セル範囲（例: <code>A1:B2</code>）のほか、配列定数（例: <code>{1,2;3,4}</code>）も指定できます。配列定数では、カンマが列区切り、セミコロンが行区切りです。</p>



<p class="wp-block-paragraph">MINVERSE関数は結果を配列（N×N行列）として返します。Googleスプレッドシートでは、出力先のセル範囲に自動的に展開されますよ。</p>



<h2 class="wp-block-heading"><span id="toc5">MINVERSE関数の基本的な使い方</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>4</td><td>7</td></tr><tr><td>2</td><td>2</td><td>6</td></tr></tbody></table></figure>



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



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



<p class="wp-block-paragraph">D1:E2に以下の逆行列が表示されます。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>D</th><th>E</th></tr></thead><tbody><tr><td>1</td><td>0.6</td><td>-0.7</td></tr><tr><td>2</td><td>-0.2</td><td>0.4</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">2×2行列の逆行列は手計算でも確認できます。行列式 <code>ad - bc</code> を分母にして、要素を入れ替える公式を使います。</p>



<pre class="wp-block-code"><code>行列式 = 4×6 - 7×2 = 24 - 14 = 10

逆行列 = (1/10) × [[6, -7], [-2, 4]]
       = [[0.6, -0.7], [-0.2, 0.4]]</code></pre>



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



<p class="wp-block-paragraph">配列定数を使って直接入力する方法もあります。</p>



<pre class="wp-block-code"><code>=MINVERSE({4,7;2,6})</code></pre>



<p class="wp-block-paragraph">こちらも同じ結果が返ります。</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>=MINVERSE(A1:C3)</code></pre>



<p class="wp-block-paragraph">結果は以下の3×3行列になります。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>D</th><th>E</th><th>F</th></tr></thead><tbody><tr><td>1</td><td>2</td><td>-2</td><td>-1</td></tr><tr><td>2</td><td>-2</td><td>3</td><td>1</td></tr><tr><td>3</td><td>7</td><td>-12</td><td>-3</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">この行列の<a href="https://mashukabu.com/spreadsheet-mdeterm-function/">行列式はMDETERM関数</a>で確認すると <strong>1</strong> です。行列式が0以外なので、逆行列が存在します。</p>



<p class="wp-block-paragraph">3×3以上の逆行列を手計算で求めるのはかなり手間がかかります。MINVERSE関数に任せるのが安心ですよ。</p>



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



<h3 class="wp-block-heading"><span id="toc9">MDETERM関数で特異行列かどうか事前チェックする</span></h3>



<p class="wp-block-paragraph">逆行列が存在しない行列を「<strong>特異行列</strong>」と呼びます。特異行列にMINVERSE関数を使うと <code>#NUM!</code> エラーになります。</p>



<p class="wp-block-paragraph">事前に<a href="https://mashukabu.com/spreadsheet-mdeterm-function/">MDETERM関数</a>で行列式を確認しておくと、エラーを未然に防げますよ。</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>



<p class="wp-block-paragraph">この行列の行列式は 2×2 &#8211; 4×1 = 0 です。2行目が1行目のちょうど半分なので、特異行列ですね。</p>



<p class="wp-block-paragraph">IF関数と組み合わせれば、安全に逆行列を求められます。</p>



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



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



<h3 class="wp-block-heading"><span id="toc10">MMULT関数と組み合わせて連立方程式を解く</span></h3>



<p class="wp-block-paragraph">MINVERSE関数の実践的な活用例として、連立方程式の解法があります。</p>



<p class="wp-block-paragraph">連立方程式は行列で表すと <code>Ax = b</code> の形になります。両辺に <code>A</code> の逆行列をかけると <code>x = A⁻¹b</code> で解が求まります。</p>



<p class="wp-block-paragraph">次の連立方程式を解いてみましょう。</p>



<pre class="wp-block-code"><code>3x + 6y + z = 11
 x +  y     = 2
3x + 10y + 2z = 17</code></pre>



<p class="wp-block-paragraph">まず、係数行列AをセルA1:C3に、定数ベクトルbをセルE1:E3に入力します。</p>



<p class="wp-block-paragraph"><strong>係数行列A</strong></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>



<p class="wp-block-paragraph"><strong>定数ベクトルb</strong></p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>E</th></tr></thead><tbody><tr><td>1</td><td>11</td></tr><tr><td>2</td><td>2</td></tr><tr><td>3</td><td>17</td></tr></tbody></table></figure>



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



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



<p class="wp-block-paragraph">MMULT関数は行列の積を計算する関数です。MINVERSE関数で逆行列を求め、それと定数ベクトルの積を計算することで、解が得られます。</p>



<p class="wp-block-paragraph">結果は以下のとおりです。</p>



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



<p class="wp-block-paragraph">つまり x=1, y=1, z=2 が解です。</p>



<p class="wp-block-paragraph">検算してみましょう。1つ目の式に代入すると 3×1 + 6×1 + 1×2 = 11 で正しいですね。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>連立方程式を解く前に、MDETERM関数で係数行列の行列式が0でないことを確認しましょう。行列式が0の場合、一意の解は存在しません。</p></blockquote>



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



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



<p class="wp-block-paragraph"><code>#NUM!</code> エラーは、行列式が0の行列（特異行列）を指定した場合に発生します。</p>



<pre class="wp-block-code"><code>=MINVERSE({2,4;1,2})  → #NUM!</code></pre>



<p class="wp-block-paragraph">MDETERM関数で行列式を確認し、0でない行列に対してのみ使用してください。</p>



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



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



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



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



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



<p class="wp-block-paragraph">指定するセル範囲が正方形（2×2、3×3など）になっているか確認してください。</p>



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



<p class="wp-block-paragraph">セル範囲に空白セルや文字列が含まれている場合もエラーになります。すべてのセルに数値が入力されているかチェックしましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>主な原因</th><th>対処法</th></tr></thead><tbody><tr><td><code>#NUM!</code></td><td>行列式が0（特異行列）</td><td>MDETERM関数で事前に行列式を確認する</td></tr><tr><td><code>#VALUE!</code></td><td>行数と列数が不一致</td><td>正方行列（N×N）のセル範囲を指定する</td></tr><tr><td><code>#VALUE!</code></td><td>空白・文字列を含む</td><td>すべてのセルに数値を入力する</td></tr></tbody></table></figure>



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



<p class="wp-block-paragraph">スプレッドシートには、MINVERSE関数以外にも行列計算に使える関数があります。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>機能</th><th>用途</th></tr></thead><tbody><tr><td>MINVERSE</td><td>逆行列を返す</td><td>連立方程式を解く、変換行列の逆変換</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-mdeterm-function/">MDETERM</a></td><td>行列式を返す</td><td>逆行列の存在判定、連立方程式の解の判定</td></tr><tr><td>MMULT</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">行列計算の基本的な流れは、まず<a href="https://mashukabu.com/spreadsheet-mdeterm-function/">MDETERM関数</a>で行列式を確認します。0でなければMINVERSE関数で逆行列を求めましょう。MMULT関数と組み合わせれば、連立方程式もスプレッドシート上で解けますよ。</p>



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



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



<ul class="wp-block-list"><li>構文は <code>=MINVERSE(正方行列)</code> で、引数は1つだけ</li><li>結果はN×N行列として自動展開される</li><li>行列式が0の特異行列には <code>#NUM!</code> エラーが返る</li><li>MDETERM関数で事前に行列式を確認すると安全</li><li>MMULT関数と組み合わせれば、連立方程式の解も求められる</li></ul>



<p class="wp-block-paragraph">数学的な関数ではありますが、使い方自体はセル範囲を指定するだけなので難しくありません。連立方程式を解きたいときに、ぜひ活用してみてください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-minverse-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのMMULT関数の使い方｜行列の積</title>
		<link>https://mashukabu.com/spreadsheet-mmult-function/</link>
					<comments>https://mashukabu.com/spreadsheet-mmult-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Thu, 26 Mar 2026 11:43:59 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[MDETERM関数]]></category>
		<category><![CDATA[MINVERSE関数]]></category>
		<category><![CDATA[MMULT関数]]></category>
		<category><![CDATA[TRANSPOSE関数]]></category>
		<category><![CDATA[行列の積]]></category>
		<category><![CDATA[行列計算]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=5289</guid>

					<description><![CDATA[スプレッドシートのMMULT関数で行列の積を求める方法を解説。2×2・異なるサイズの行列の掛け算、MINVERSE関数と組み合わせた連立方程式の解法、加重スコアの計算など実務活用例も紹介します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">スプレッドシートで複数の行列を掛け合わせたいとき、1つずつセルに計算式を入力するのは大変ですよね。行列のサイズが大きくなるほど、ミスも起きやすくなります。</p>



<p class="wp-block-paragraph">MMULT関数を使えば、2つの行列の積をまとめて計算できます。加重スコアの算出や連立方程式の解法など、実務でも活躍する場面がありますよ。</p>



<p class="wp-block-paragraph">この記事では、スプレッドシートのMMULT関数の基本から実践的な活用例まで解説します。</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">スプレッドシートのMMULT関数とは？</a></li><li><a href="#toc2" tabindex="0">MMULT関数の書き方</a><ol><li><a href="#toc3" tabindex="0">基本構文</a></li><li><a href="#toc4" tabindex="0">引数の説明</a></li><li><a href="#toc5" tabindex="0">行列の積が計算できる条件</a></li></ol></li><li><a href="#toc6" tabindex="0">MMULT関数の基本的な使い方</a><ol><li><a href="#toc7" tabindex="0">2×2行列どうしの積を求める</a></li><li><a href="#toc8" tabindex="0">異なるサイズの行列の積を求める（2×3と3×2）</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">MINVERSE関数と組み合わせて連立方程式を解く</a></li><li><a href="#toc12" tabindex="0">TRANSPOSE関数と組み合わせて転置してから掛ける</a></li></ol></li><li><a href="#toc13" tabindex="0">よくあるエラーと対処法</a></li><li><a href="#toc14" tabindex="0">似た関数との違い・使い分け</a></li><li><a href="#toc15" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

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



<p class="wp-block-paragraph">MMULT関数は、2つの行列（配列）の積を返す関数です。</p>



<p class="wp-block-paragraph">読み方は「<strong>マトリックス マルチプライ</strong>」です。「Matrix」は行列、「Multiply」は掛け算を意味します。</p>



<p class="wp-block-paragraph">行列の積とは、2つの行列を掛け合わせて新しい行列を作る計算のことです。通常の数値の掛け算とは異なり、行と列の組み合わせで計算します。</p>



<p class="wp-block-paragraph">行列計算というと難しく感じるかもしれませんが、使い方自体はシンプルです。2つのセル範囲を指定するだけで結果が返ってきますよ。</p>



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



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



<pre class="wp-block-code"><code>=MMULT(配列1, 配列2)</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>配列1</td><td>必須</td><td>掛け算の左側にあたる行列（セル範囲または配列定数）</td></tr><tr><td>配列2</td><td>必須</td><td>掛け算の右側にあたる行列（セル範囲または配列定数）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">引数は2つだけなので、覚えやすいですね。</p>



<p class="wp-block-paragraph">セル範囲（例: <code>A1:B2</code>）のほか、配列定数（例: <code>{1,2;3,4}</code>）も指定できます。配列定数では、カンマが列区切り、セミコロンが行区切りです。</p>



<h3 class="wp-block-heading"><span id="toc5">行列の積が計算できる条件</span></h3>



<p class="wp-block-paragraph">MMULT関数で重要なのが、<strong>配列1の列数と配列2の行数が一致している</strong>ことです。この条件を満たさないとエラーになります。</p>



<p class="wp-block-paragraph">たとえば、配列1が2行<strong>3列</strong>で配列2が<strong>3行</strong>2列なら、列数と行数が「3」で一致するので計算できます。結果は2行2列の行列になりますよ。</p>



<pre class="wp-block-code"><code>配列1（2×3）× 配列2（3×2）= 結果（2×2）</code></pre>



<p class="wp-block-paragraph">結果の行列は「配列1の行数 × 配列2の列数」のサイズになります。</p>



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



<h3 class="wp-block-heading"><span id="toc7">2×2行列どうしの積を求める</span></h3>



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



<p class="wp-block-paragraph">セルA1:B2に配列1、セルD1:E2に配列2が入っているとします。</p>



<p class="wp-block-paragraph"><strong>配列1</strong></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>1</td><td>2</td></tr><tr><td>2</td><td>3</td><td>4</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><strong>配列2</strong></p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>D</th><th>E</th></tr></thead><tbody><tr><td>1</td><td>5</td><td>6</td></tr><tr><td>2</td><td>7</td><td>8</td></tr></tbody></table></figure>



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



<pre class="wp-block-code"><code>=MMULT(A1:B2, D1:E2)</code></pre>



<p class="wp-block-paragraph">G1:H2に以下の結果が表示されます。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>G</th><th>H</th></tr></thead><tbody><tr><td>1</td><td>19</td><td>22</td></tr><tr><td>2</td><td>43</td><td>50</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">計算の仕組みを確認してみましょう。行列の積では、左の行列の「行」と右の行列の「列」を組み合わせて、対応する要素を掛けて足します。</p>



<pre class="wp-block-code"><code>G1 = 1×5 + 2×7 = 5 + 14 = 19
H1 = 1×6 + 2×8 = 6 + 16 = 22
G2 = 3×5 + 4×7 = 15 + 28 = 43
H2 = 3×6 + 4×8 = 18 + 32 = 50</code></pre>



<p class="wp-block-paragraph">配列定数を使って直接入力する方法もあります。</p>



<pre class="wp-block-code"><code>=MMULT({1,2;3,4}, {5,6;7,8})</code></pre>



<p class="wp-block-paragraph">こちらも同じ結果が返ります。</p>



<h3 class="wp-block-heading"><span id="toc8">異なるサイズの行列の積を求める（2×3と3×2）</span></h3>



<p class="wp-block-paragraph">次に、サイズが異なる行列の掛け算を見てみましょう。</p>



<p class="wp-block-paragraph">セルA1:C2に2×3の配列1、セルE1:F3に3×2の配列2が入っているとします。</p>



<p class="wp-block-paragraph"><strong>配列1（2×3）</strong></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>1</td><td>2</td><td>3</td></tr><tr><td>2</td><td>4</td><td>5</td><td>6</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><strong>配列2（3×2）</strong></p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>E</th><th>F</th></tr></thead><tbody><tr><td>1</td><td>7</td><td>8</td></tr><tr><td>2</td><td>9</td><td>10</td></tr><tr><td>3</td><td>11</td><td>12</td></tr></tbody></table></figure>



<pre class="wp-block-code"><code>=MMULT(A1:C2, E1:F3)</code></pre>



<p class="wp-block-paragraph">配列1の列数（3）と配列2の行数（3）が一致しているので、問題なく計算できます。結果は2×2の行列です。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>H</th><th>I</th></tr></thead><tbody><tr><td>1</td><td>58</td><td>64</td></tr><tr><td>2</td><td>139</td><td>154</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">検算してみましょう。</p>



<pre class="wp-block-code"><code>H1 = 1×7 + 2×9 + 3×11 = 7 + 18 + 33 = 58
I1 = 1×8 + 2×10 + 3×12 = 8 + 20 + 36 = 64
H2 = 4×7 + 5×9 + 6×11 = 28 + 45 + 66 = 139
I2 = 4×8 + 5×10 + 6×12 = 32 + 50 + 72 = 154</code></pre>



<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">MMULT関数が実務で最も活躍するのが、<strong>加重スコアの計算</strong>です。複数の評価項目にそれぞれ重みを付けて合計スコアを出す場面で便利ですよ。</p>



<p class="wp-block-paragraph">たとえば、3人の候補者を「技術力」「コミュニケーション」「リーダーシップ」の3項目で評価するケースを考えます。</p>



<p class="wp-block-paragraph"><strong>評価スコア（A1:C3）</strong></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>80</td><td>70</td><td>60</td></tr><tr><td>2</td><td>65</td><td>90</td><td>75</td></tr><tr><td>3</td><td>90</td><td>60</td><td>80</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><strong>重み（E1:E3）</strong></p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>E</th></tr></thead><tbody><tr><td>1</td><td>0.5</td></tr><tr><td>2</td><td>0.3</td></tr><tr><td>3</td><td>0.2</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">重みは「技術力50%・コミュニケーション30%・リーダーシップ20%」という配分です。</p>



<pre class="wp-block-code"><code>=MMULT(A1:C3, E1:E3)</code></pre>



<p class="wp-block-paragraph">結果は3行1列の行列で、各候補者の加重スコアが一発で計算されます。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>G</th></tr></thead><tbody><tr><td>1</td><td>73</td></tr><tr><td>2</td><td>74.5</td></tr><tr><td>3</td><td>79</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">検算してみましょう。</p>



<pre class="wp-block-code"><code>候補者1: 80×0.5 + 70×0.3 + 60×0.2 = 40 + 21 + 12 = 73
候補者2: 65×0.5 + 90×0.3 + 75×0.2 = 32.5 + 27 + 15 = 74.5
候補者3: 90×0.5 + 60×0.3 + 80×0.2 = 45 + 18 + 16 = 79</code></pre>



<p class="wp-block-paragraph">SUMPRODUCT関数でも同じ計算はできますが、候補者ごとに数式を書く必要があります。MMULT関数なら1つの数式で全員分をまとめて計算できるのがメリットです。</p>



<h3 class="wp-block-heading"><span id="toc11">MINVERSE関数と組み合わせて連立方程式を解く</span></h3>



<p class="wp-block-paragraph">MMULT関数と<a href="https://mashukabu.com/spreadsheet-minverse-function/">MINVERSE関数</a>を組み合わせると、連立方程式を解くことができます。</p>



<p class="wp-block-paragraph">連立方程式は行列で表すと <code>Ax = b</code> の形になります。両辺にAの逆行列を掛けると <code>x = A⁻¹b</code> で解が求まります。</p>



<p class="wp-block-paragraph">次の連立2元1次方程式を解いてみましょう。</p>



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



<p class="wp-block-paragraph">係数行列AをセルA1:B2に、定数ベクトルbをセルD1:D2に入力します。</p>



<p class="wp-block-paragraph"><strong>係数行列A</strong></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>1</td><td>2</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><strong>定数ベクトルb</strong></p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>D</th></tr></thead><tbody><tr><td>1</td><td>8</td></tr><tr><td>2</td><td>5</td></tr></tbody></table></figure>



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



<pre class="wp-block-code"><code>=MMULT(MINVERSE(A1:B2), D1:D2)</code></pre>



<p class="wp-block-paragraph">結果は以下のとおりです。</p>



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



<p class="wp-block-paragraph">つまり x=1, y=2 が解です。検算すると 2(1)+3(2)=8、1(1)+2(2)=5 で合っていますね。</p>



<p class="wp-block-paragraph">連立方程式を解く前に、<a href="https://mashukabu.com/spreadsheet-mdeterm-function/">MDETERM関数</a>で行列式が0でないか確認しておくと安心です。行列式が0の場合は逆行列が存在せず、解が求められません。</p>



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



<p class="wp-block-paragraph">結果は 2×2 &#8211; 3×1 = 1 で、0ではないので逆行列が存在します。</p>



<h3 class="wp-block-heading"><span id="toc12">TRANSPOSE関数と組み合わせて転置してから掛ける</span></h3>



<p class="wp-block-paragraph">行列の向きが合わないときは、<a href="https://mashukabu.com/spreadsheet-transpose-function/">TRANSPOSE関数</a>で転置してからMMULT関数に渡すと便利です。</p>



<p class="wp-block-paragraph">たとえば、データが横方向（1行3列）に並んでいて、重みも横方向（1行3列）になっている場合を考えます。</p>



<p class="wp-block-paragraph"><strong>データ（A1:C1）</strong>: <code>{10, 20, 30}</code><br><strong>重み（A2:C2）</strong>: <code>{0.2, 0.3, 0.5}</code></p>



<p class="wp-block-paragraph">このままではMMULT関数の条件（配列1の列数=配列2の行数）を満たしません。重みを転置して縦方向に変換します。</p>



<pre class="wp-block-code"><code>=MMULT(A1:C1, TRANSPOSE(A2:C2))</code></pre>



<p class="wp-block-paragraph">結果は <code>10×0.2 + 20×0.3 + 30×0.5 = 2 + 6 + 15 = 23</code> です。</p>



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



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>#VALUE!</td><td>配列1の列数と配列2の行数が一致していない</td><td>行列のサイズを確認する。必要に応じてTRANSPOSE関数で転置する</td></tr><tr><td>#VALUE!</td><td>セルに数値以外（テキストや空白）が含まれている</td><td>対象範囲のセルがすべて数値で埋まっているか確認する</td></tr><tr><td>#REF!</td><td>結果の行列がシートの範囲を超える</td><td>出力先に十分なスペースを確保する</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">最も多いのは、行列のサイズが合わないことによる <code>#VALUE!</code> エラーです。配列1の列数と配列2の行数が同じかどうか、まず確認してみてください。</p>



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



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>用途</th><th>違い</th></tr></thead><tbody><tr><td>MMULT</td><td>行列の積を求める</td><td>2つの行列を掛け合わせて新しい行列を生成</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-minverse-function/">MINVERSE</a></td><td>逆行列を求める</td><td>正方行列の逆行列を返す。MMULTと組み合わせて連立方程式に使う</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-mdeterm-function/">MDETERM</a></td><td>行列式を求める</td><td>正方行列の行列式（スカラー値）を返す。逆行列の存在判定に使う</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-transpose-function/">TRANSPOSE</a></td><td>行列の転置</td><td>行と列を入れ替える。MMULTの前処理として使うことが多い</td></tr><tr><td>SUMPRODUCT</td><td>要素ごとの積の合計</td><td>同じサイズの配列の対応要素を掛けて合計。行列の積とは計算方法が異なる</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">MMULTは「行列の積」、SUMPRODUCTは「要素ごとの積の合計」です。1行×1列の結果ならSUMPRODUCTでも同じ答えが出ますが、結果が行列になる場合はMMULTを使いましょう。</p>



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



<p class="wp-block-paragraph">スプレッドシートのMMULT関数は、2つの行列の積を求める関数です。</p>



<p class="wp-block-paragraph">ポイントを振り返りましょう。</p>



<ul class="wp-block-list"><li><strong>基本</strong>: <code>=MMULT(配列1, 配列2)</code> で行列の積を計算する</li><li><strong>条件</strong>: 配列1の列数と配列2の行数が一致している必要がある</li><li><strong>加重スコア</strong>: 評価項目×重みの計算を1つの数式でまとめて処理できる</li><li><strong>連立方程式</strong>: MINVERSE関数と組み合わせて <code>=MMULT(MINVERSE(A), b)</code> で解が求まる</li><li><strong>転置との連携</strong>: 行列の向きが合わないときはTRANSPOSE関数で変換する</li></ul>



<p class="wp-block-paragraph">加重スコアの計算は人事評価や商品比較など、さまざまな場面で使えます。ぜひ試してみてください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-mmult-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
