Home
›
Archives for 8月 2024
2024/08/01
【Excel関数】MMULT
【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関数を駆使する必要がありました。そのお話は、また別の機会にしたいと思います。
About Me
Popular Posts
Labels
ついてくるサイドバー
Followers
ラベル
人気の投稿
-
【Excel関数】ローカルのLAMBDA関数を再帰呼び出しする 作成:2024年04月02日 等差数列の和を、再帰関数で求める例で解説します。 「10」だったら、10+9+・・・+2+1=55、というやつです。 VBAだったら 名前の定義で再帰関数を作る ...
-
【Excel関数】MMULT 作成:2024年07月30日 MMULT(マトリックス・マルチプリケーション)関数を解説します。 よくある、解説になってない解説。 2つの行列の行列積を求めます 計算結果の 行数×列数 は、行列1の行数×行列2の列数 になりま...
-
Google Search Consoleでインデックス登録されない Google Bloggerの記事が、Google Search Consoleでインデックス登録できない。リダイレクトエラーになる。対策として、urlの末尾に「?m=1」を付けてリクエストするという方法がある...