【Excel関数】MMULT
作成:2024年07月30日
MMULT(マトリックス・マルチプリケーション)関数を解説します。
よくある、解説になってない解説。
- 2つの行列の行列積を求めます
- 計算結果の 行数×列数 は、行列1の行数×行列2の列数 になります
- 行列1の列数 と、行列2の行数 は同じである必要があります
意味不明ですね。
なので今回は普通とは全く違う解説をします。
- MMULTとは、行と列の組み合わせの数だけSUMPRODUCTする関数です
わかりやすい!では詳しく解説していきます。
1. 結果のイメージ化
MMULTを数式で表すとこうなります。

i行k列の行列b と k行j列の行列c の行列積cはi行j列 になると示されています。
・・・って、こんな数式も解説も覚えられないですよね!
なのでイメージで覚えましょう。
結果の左に行列1。結果の上に行列2。この関係をイメージできると「結果 = 行列1の行数 × 行列2の列数」というルールは覚えなくても自然と導けるはずです。
2. SUMPRODUCTのおさらい
行列1の行数・行列2の列数はもう大丈夫ですね。次は、行列1の列数・行列2の行数です。この2つは同じ数でなければいけません。なぜか?SUMPRODUCTするからです。
ということで、SUMPRODUCTのおさらいです。
{1;2;3;4}という配列と、{11;14;17;20}という配列があります。まず、各要素同士を掛けます{11;28;51;80}。その後、掛けた結果を合計します{170}。これがSUMPRODUCTです。
各要素同士を掛けるということは、要素の数が同じでなければ計算できませんね。上図がイメージできれば、自然と導けるはずです。
3. 行列積(SUMPRODUCTを繰り返す)
結果の1セル分(1行目1列目)の計算はできました。他のセルも同様に計算してみましょう。
結果の1行目2列目は、{1;2;3;4}と{12;15;18;21}のSUMPRODUCTですね。結果は{180}になります。
残りのSUMPRODUCTも計算すると、最終的な結果は{170,180,190;418.444,470}となり、それはMMULTの結果でもあります。
4. 使いどころ
確かに行列積が簡単に求められて便利ではありますが、MMULTの凄いところはそこではありません。
MMULTの計算の過程がとても特殊なのに気付きましたでしょうか?なんと、部分的に集計しているのです。エクセルの普通の集計関数(SUMとかAVERAGEとか)は、複数の値を一個の値にします。「行単位・列単位で集計」ということができません。その不可能を可能にするのがMMULT関数なのです。
365からは、BYROW/BYCOL関数を使って簡単に行・列単位の集計ができるようになりましたが、それまではこのMMULT関数を駆使する必要がありました。そのお話は、また別の機会にしたいと思います。
コメントを投稿