excel

【Excel】エクセルで行列計算をする方法(配列数式・行列関数)

エクセルで行列の積を求める方法 - 行列の積を表示するセル範囲
当サイトでは記事内に広告を含みます

Excelでは、複数の数値を縦横に並べた表を行列として扱い、掛け算や逆行列、転置といった計算を行えます。

売上データの集計、係数を使った予測、連立方程式の計算などでは、通常の四則演算だけでは処理が複雑になりがちです。

そこで役立つのが、配列数式とMMULT関数、MINVERSE関数、TRANSPOSE関数などの行列関数です。

行列計算では、元データの行数と列数、数式を入力する範囲の大きさを正しく対応させることが重要です。

この記事で扱う主な行列計算

・MMULT関数による行列の積

・MINVERSE関数による逆行列

・TRANSPOSE関数による行列の転置

・配列数式と動的配列を使った入力方法

サンプルデータは1行目を見出し行とした構成で解説します。

数式をコピーする前に、行列のサイズとセル範囲を確認しておくと、#VALUE!エラーを避けやすくなります。

それでは、エクセルで行列計算をする方法を順番に確認していきましょう。

 

エクセルで行列の積を求める方法

それではまず、MMULT関数を使って2つの行列を掛け合わせる方法について解説していきます。

区分 A列 B列 C列
行列A 2 3 4
行列B 5 6 7

 

MMULT関数の基本構文

MMULT関数は、2つの配列またはセル範囲を指定し、行列の積を返す関数です。

=MMULT(配列1,配列2)

配列1の列数と、配列2の行数が一致していなければ計算できません。

たとえば2行3列の行列に3行2列の行列を掛ける場合、結果は2行2列になります。

掛け算の順序を入れ替えると結果の値や結果範囲の大きさが変わるため、行列では通常の数値計算以上に順番が大切です。

Microsoft 365やExcel 2021以降では、数式を先頭セルに入力すると、必要な範囲に結果が自動展開されます。

古いExcelでは、結果を表示するセル範囲を先に選択してから数式を入力し、CtrlキーとShiftキーとEnterキーで確定する配列数式の操作が必要です。

【操作のポイント】MMULT関数を入力する前に、左側の行列の列数と右側の行列の行数が同じかを確認します。

 

行列の積を表示するセル範囲

続いては、計算結果を表示する範囲の決め方を確認していきます。

エクセルで行列の積を求める方法 - 行列の積を表示するセル範囲

行列Aが2行3列、行列Bが3行2列なら、結果は2行2列です。

たとえば行列AをB2からD3、行列BをF2からG4に入力した場合、結果用としてI2からJ3を確保します。

結果の行数は左側の行列Aの行数です。

結果の列数は右側の行列Bの列数です。

この結果範囲が不足すると、動的配列対応のExcelではスピル範囲に障害がある旨のエラーが表示されることがあります。

結果が展開される予定のセルに文字列や数値が入っている場合は、不要な内容を別の場所へ移してから実行しましょう。

先頭セルだけにMMULT関数を入力し、結果が広がる範囲を空けておくのが、現在のExcelでの基本操作です。

【操作のポイント】結果用セルは、左の行列の行数と右の行列の列数で決めます。

 

数式入力とオートフィルの考え方

続いては、セル参照を利用した数式入力の考え方を確認していきます。

エクセルで行列の積を求める方法 - 数式入力とオートフィルの考え方

行列計算では、通常のSUMPRODUCT関数を使って1セルずつ計算する方法もありますが、MMULT関数なら行列全体をまとめて処理できます。

=MMULT(B2:D3,F2:G4)

この数式をI2セルへ入力すると、2行2列の結果がI2からJ3に展開されます。

元データを別の表へコピーして計算する場合は、行列の範囲指定がずれないよう、必要に応じて絶対参照を使います。

たとえば計算式を別の場所へ複製する予定なら、$B$2:$D$3のように行列範囲を固定しておくと便利です。

一方、月別の行列を横へコピーして計算する場合は、列だけを動かす混合参照も役立ちます。

行列関数はオートフィルで1セルずつ複製するより、配列全体を一度に返す仕組みを理解することが近道です。

【操作のポイント】先頭セルへの入力後、結果の展開先にデータがないかを確認します。

 

配列数式による行列計算の入力方法

続いては、配列数式と動的配列を使った行列計算の入力方法について確認していきます。

セル B列 C列 D列
2行目 1 2 3
3行目 4 5 6

 

動的配列対応Excelでの確定操作

それではまず、Microsoft 365などの動的配列に対応したExcelでの入力方法を解説していきます。

動的配列では、数式を入力したセルを起点として、必要な行数と列数へ計算結果が自動的に広がります。

配列数式による行列計算の入力方法 - 動的配列対応Excelでの確定操作

MMULT関数、TRANSPOSE関数、MINVERSE関数はいずれも、結果が複数セルになる代表的な関数です。

たとえばI2セルを選択して数式バーにMMULT関数を入力し、Enterキーで確定します。

数式を入力したセルの周囲に青い枠線が表示され、展開された結果全体が1つのスピル範囲として扱われます。

スピル範囲内の一部だけを直接編集することはできないため、修正は必ず先頭セルで行います。

【操作のポイント】動的配列ではCtrlキーとShiftキーとEnterキーを使わず、通常のEnterキーで確定します。

 

旧バージョンでの配列数式の確定

続いては、動的配列に対応していないExcelでの配列数式の確定方法を確認していきます。

Excel 2019以前などでは、複数セルへ結果を返す数式を入力する前に、結果表示用の範囲をあらかじめ選択します。

配列数式による行列計算の入力方法 - 旧バージョンでの配列数式の確定

2行2列の結果が必要なら、I2からJ3をドラッグして選択した状態で数式を入力します。

入力後はEnterキーだけではなく、CtrlキーとShiftキーを押したままEnterキーを押してください。

正しく確定されると、数式バーでは数式全体が波かっこで囲まれた配列数式として扱われます。

波かっこはキーボードから直接入力するものではなく、確定操作によってExcelが付ける表示です。

旧バージョンでは、配列数式の範囲内にある1セルだけを削除するとエラーになるため、範囲全体を選択して操作します。

【操作のポイント】古いExcelでは、結果範囲の選択とCtrlキー+Shiftキー+Enterキーの組み合わせを忘れないようにします。

 

スピルエラーと参照範囲の確認

続いては、配列数式で発生しやすいエラーと確認場所について解説していきます。

#SPILL!エラーは、結果を広げたいセル範囲に既存の値、結合セル、テーブルの制約などがあるときに起こります。

数式セルを選択すると、Excelが展開を妨げているセルを示してくれる場合があります。

また、MMULT関数で#VALUE!が表示されるときは、2つの行列のサイズが計算条件に合っていない可能性が高いでしょう。

MMULT関数で確認する項目

・左の行列の列数

・右の行列の行数

・数値以外の文字列や空白の混入

見た目は数字でも、文字列として保存された値が混ざると行列計算が失敗することがあります。

セルの表示形式を確認し、必要ならVALUE関数や区切り位置機能で数値へ変換しましょう。

【操作のポイント】エラーが出たときは、結果範囲の障害、行列のサイズ、数値形式の順に確認します。

 

行列関数による逆行列と転置の計算

続いては、MINVERSE関数とTRANSPOSE関数を使う行列計算について確認していきます。

セル B列 C列
2行目 4 7
3行目 2 6

 

MINVERSE関数による逆行列

それではまず、正方行列の逆行列を求めるMINVERSE関数について解説していきます。

=MINVERSE(B2:C3)

MINVERSE関数は、行数と列数が同じ正方行列を対象に、逆行列を返します。

逆行列は、元の行列に掛け合わせたときに単位行列となる特別な行列です。

連立方程式を行列で解く場合や、係数行列から未知数を計算する場合に利用されます。

すべての正方行列に逆行列があるわけではなく、逆行列を持たない行列ではMINVERSE関数がエラーになります。

結果も元の行列と同じ2行2列になるため、動的配列対応版では先頭セルに数式を入力します。

【操作のポイント】MINVERSE関数には、必ず行数と列数が同じ数値だけの範囲を指定します。

 

TRANSPOSE関数による行列の転置

続いては、行と列を入れ替えるTRANSPOSE関数を確認していきます。

=TRANSPOSE(B2:D3)

TRANSPOSE関数では、横方向に並んだ値を縦方向へ、縦方向に並んだ値を横方向へ入れ替えられます。

2行3列の元データを転置すると、結果は3行2列です。

この操作は、縦持ちと横持ちのデータ構成を調整したい場面や、他の行列計算に必要な形へ整えたい場面で便利です。

コピーして貼り付ける転置とは異なり、TRANSPOSE関数では元データを変更した場合に結果も連動します。

連動が不要なときは、コピー後に形式を選択して貼り付けから行列を入れ替える方法を使い分けましょう。

【操作のポイント】転置後の範囲は、元の行数と列数が入れ替わることを前提に空けておきます。

 

Excel画面での関数入力手順

続いては、関数を数式バーへ入力する操作画面を確認していきます。

Book1 – Excel− □ ×
ファイル ホーム 挿入 ページ レイアウト 数式 データ 校閲 表示
貼り付け
B
罫線
中央揃え
fx 関数の挿入
E2
fx
=MINVERSE(B2:C3)
A B C D E
1 係数1 係数2 逆行列
2 行1 4 7 数式入力
3 行2 2 6
➤
数式バーで関数を入力

セルE2を選択し、数式バーへMINVERSE関数またはTRANSPOSE関数を入力してEnterキーで確定します。

入力後は結果の大きさに応じてセルへ値が広がるため、周囲のセルを空けておくことが必要です。

関数の入力場所は結果範囲の左上セルであり、元データ範囲を選択したまま入力する必要はありません。

【操作のポイント】数式バーでセル範囲を確認し、参照先が意図した行列全体になっているか確認します。

 

行列計算で使うSUMPRODUCT関数と単位行列

続いては、行列計算と関連の深いSUMPRODUCT関数、単位行列の考え方について確認していきます。

項目 数量 単価
商品A 3 120
商品B 5 80

 

SUMPRODUCT関数による内積

それではまず、対応する要素を掛けて合計するSUMPRODUCT関数について解説していきます。

=SUMPRODUCT(B2:B3,C2:C3)

SUMPRODUCT関数は、同じ位置にある数値同士を掛け合わせ、その合計を返します。

数量と単価から売上合計を求める場合なら、3×120と5×80を計算して合計するため、結果は760です。

SUMPRODUCT関数は結果が1つの数値になるため、MMULT関数よりも日常的な集計表へ取り入れやすい関数です。

行列の計算では、1行の要素と1列の要素を掛けて合計する処理が基本になります。

SUMPRODUCT関数を理解すると、MMULT関数が内部でどのような考え方で値を作るかもつかみやすくなります。

【操作のポイント】SUMPRODUCT関数で指定する範囲は、行数と列数を同じ大きさにそろえます。

 

単位行列の役割

続いては、逆行列の確認で役立つ単位行列について確認していきます。

単位行列は、左上から右下へ並ぶ対角成分が1で、それ以外の成分が0となる正方行列です。

2行2列の単位行列なら、1と0、0と1という配置になります。

行列Aとその逆行列をMMULT関数で掛けると、計算誤差の範囲内で単位行列に近い結果になります。

=MMULT(B2:C3,E2:F3)

この確認は、MINVERSE関数で求めた結果が想定どおりかを検証したいときに便利です。

小数を含む逆行列では、表示形式によって0.0000000001のようなごく小さな誤差が見えることがあります。

【操作のポイント】逆行列の検算では、MMULT関数の結果が対角線上は1、それ以外は0に近いかを確認します。

 

連立方程式への応用

続いては、行列関数を連立方程式へ応用する考え方を解説していきます。

たとえば係数行列をA、未知数を並べた列をX、答えの列をBとすると、AX=Bという形で整理できます。

係数行列Aの逆行列が存在する場合、両側へ逆行列を掛けることでXを求められます。

=MMULT(MINVERSE(B2:C3),E2:E3)

この数式では、B2からC3に係数行列、E2からE3に定数項を入力している想定です。

結果は未知数の数と同じ行数を持つ列として返されます。

連立方程式では係数行列が正方行列であり、逆行列が存在することがMINVERSE関数を使う前提です。

【操作のポイント】係数行列と定数項の対応する行がずれないよう、表の並び順を固定して入力します。

 

行列計算で発生するエラーの対処

続いては、エクセルの行列計算でよくあるエラーと対処方法について確認していきます。

エラー表示 主な原因 確認内容
#VALUE! 行列サイズの不一致 列数と行数
#NUM! 逆行列が存在しない 行列式と値
#SPILL! 展開先の障害 周囲のセル

 

MMULT関数の#VALUE!エラー

それではまず、MMULT関数で表示される#VALUE!エラーについて解説していきます。

最も多い原因は、左側の行列の列数と右側の行列の行数が一致していないことです。

2行3列の範囲に2行2列の範囲を掛けようとすると、内側の数が3と2で異なるため計算できません。

また、セル範囲の中に見出し文字列やハイフン、空文字列が含まれている場合もエラーの原因になります。

数式には1行目の見出しを含めず、実際の数値が入力された2行目以降だけを指定します。

【操作のポイント】MMULT関数の範囲指定では、見出し行を除き、内側の次元が一致するかを数えます。

 

MINVERSE関数の#NUM!エラー

続いては、MINVERSE関数で表示される#NUM!エラーについて確認していきます。

MINVERSE関数は、逆行列が存在しない行列に対して#NUM!エラーを返します。

たとえば一方の行または列が他方の倍数になっている場合、情報が重複しているため逆行列を作れないことがあります。

また、指定範囲が正方行列ではない場合は、逆行列の定義に合わないため計算できません。

逆行列の確認項目

・行数と列数が同じか

・重複した行や列がないか

・数値以外のデータが混ざっていないか

#NUM!エラーは入力ミスだけでなく、数学的に逆行列を持たないデータ構造を示す場合があります。

【操作のポイント】MINVERSE関数でエラーになった場合は、範囲の形と行列内の数値関係を確認します。

 

表示桁数と計算誤差の確認

続いては、行列計算の結果に現れる小数と丸め誤差について確認していきます。

Excelは内部で高い精度の数値を扱いますが、小数の計算結果を画面に表示するときには表示桁数の影響を受けます。

逆行列や行列の積では、理論上は0になる値がごく小さな小数として表示されることがあります。

これは浮動小数点演算による一般的な現象であり、必ずしも数式の誤りを意味するわけではありません。

表示だけを整えたい場合は小数点以下の桁数を減らし、計算値そのものを丸めたい場合はROUND関数を使い分けます。

ただし、途中の計算を早い段階で丸めると最終結果へ影響することがあるため、検算の際は十分な桁数を残すと安心です。

【操作のポイント】計算結果の見た目と実際の値を区別し、必要に応じて表示形式またはROUND関数を選びます。

 

まとめ エクセルで行列計算をする方法(行列関数・配列数式)

エクセルで行列計算を行うときは、MMULT関数で行列の積を求め、MINVERSE関数で逆行列を求め、TRANSPOSE関数で行と列を入れ替えます。

MMULT関数では、左側の行列の列数と右側の行列の行数を一致させることが基本です。

MINVERSE関数は正方行列に対して使い、逆行列が存在しない場合には#NUM!エラーになることを覚えておきましょう。

Microsoft 365などの新しいExcelでは、先頭セルへ数式を入力するだけで結果が自動展開されます。

旧バージョンでは、結果範囲を選択してからCtrlキーとShiftキーとEnterキーで確定する配列数式の操作が必要です。

行列計算を正しく進める鍵は、セル範囲の大きさ、見出し行を除いた数値範囲、結果を表示する空きセルの3点です。

SUMPRODUCT関数による内積もあわせて理解すると、売上計算や重み付き集計など、実務の表計算にも行列の考え方を応用できます。

まずは小さな2行2列のサンプルから試し、数式バーと結果範囲の変化を確認しながら使いこなしていきましょう。