2024/08/01

【Excel関数】MMULT

event_note8月 01, 2024 editBy スタディPCネット 武蔵ヶ丘校 forum No comments

【Excel関数】MMULT

作成:2024年07月30日
MMULT(マトリックス・マルチプリケーション)関数を解説します。

よくある、解説になってない解説。
  • 2つの行列の行列積を求めます
  • 計算結果の 行数×列数 は、行列1の行数×行列2の列数 になります
  • 行列1の列数 と、行列2の行数 は同じである必要があります
意味不明ですね。

なので今回は普通とは全く違う解説をします。
  • MMULTとは、行と列の組み合わせの数だけSUMPRODUCTする関数です
わかりやすい!では詳しく解説していきます。

  1. 結果(行列1の行数 × 行列2の列数)のイメージ化
  2. SUMPRODUCTのおさらい
  3. 行列積(SUMPRODUCTを繰り返す)
  4. 使いどころ

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関数を駆使する必要がありました。そのお話は、また別の機会にしたいと思います。