【エクセル】行列の積を一発算出する方法!VBAへの組み込み方法まで!

「エクセルで行列の積を計算したい!」

この記事ではこんな状況で使える関数をご紹介します。

 

行列の積なんて、高校の数学の知識さえあれば、ひとつひとつの要素を掛けたり足したりすれば計算はできます。

しかし、そんな作業を手作業でやっていては時間がいくらあっても足りません。

 

エクセルには、行列の積を一発で計算できる関数が備わっています。

この記事では行列の積を計算できるMMULT関数の使い方をご紹介します。

 

また、その関数をVBAで使用する方法についても解説していきます。

 

それでは早速やっていきます!

スポンサーリンク

行列の積を算出する:MMULT関数

冒頭にも説明したように、エクセルには行列の積を計算する関数があらかじめ組み込まれています。

 

その関数はMMULT関数です。

 

このMMULTという意味は

行列を表すMATRIXと、積を表すMULTIPLYという英語を掛け合わせていると思われます。

(英語の意味まで覚えておけば、関数を覚えやすいですね。)

スポンサーリンク

MMULT関数の使い方

MMULT関数は行列を計算しますので、関数の適用範囲は一つのセルではなく、ある領域にまたがることになります。

 

そのため、通常のひとつのセルにだけ適用する関数にはない手順がありますので、この記事を読んでよく確認しておきましょう。

 

ここからは実際のMMULT関数の使用方法を解説していきます。

 

とはいえ、言葉だけで説明してもわかりにくいと思いますので、今回は以下の画像のような二つの行列の積を実際に算出してみましょう。

行列の積を計算するためのサンプルデータ

◆手順①行列の積を算出する範囲を選択する

まず始めに行列の積を算出する範囲をあらかじめ選択しておきます。

つまり、計算したい行列の積が何×何の行列になるのかをあらかじめ把握しておく必要があります。

 

今回はA行列(4×2)とB行列(2×4)なので積は(4×4)になりますので、以下の画像のように縦4、横4の範囲を選択しておきます。

※選択する場所はどこでも問題ありません。

MMULT関数を使用する手順

 

◆手順②選択を維持したまま、数式を入力する

算出範囲が選択できたら、そのまま数式を入力します。

以下の画像を参考に

=MMULT(行列Aの範囲, 行列Bの範囲)

と入力してください。

※ここで普段ならEnterを押したくなるところですが、まだ我慢してください。

MMULT関数を使用する手順

 

◆手順③Shift + Ctrl + Enterを同時に押す

さきほどまでの数式入力が終わったら、Shift, Ctrl, Enterを同時に押します。

この作業が通常の関数を使用する場合と異なる点ですね。

この作業をすることで、選択している領域に対して、この関数を適用することが出来ます。

MMULT関数を使用する手順

 

ここまでやると以下の画像のように行列の積がしっかりと選択した範囲に出力されているはずです。

MMULT関数で行列の積を計算した結果

念のため確認計算をしてみても、問題なく計算されているようですね。

 

というわけでここまでがエクセルシート上で行列の積を計算する方法のご紹介でした。

 

スポンサーリンク

MMULT関数をVBAで使用する方法

最後に今回紹介した内容をVBAをつかって再現してみましょう。

VBAでMMULT関数を使用する様子

 

以下が今回の一連の作業を再現できるVBAコードです。

Sub CALC_MMULT()
    '行列範囲の宣言
    matrix_A = Range(Cells(3, 2), Cells(6, 3))
    matrix_B = Range(Cells(3, 5), Cells(4, 8))
    '行列の積を計算
    Range(Cells(9, 2), Cells(12, 5)) = _
    WorksheetFunction.MMult(matrix_A, matrix_B)
End Sub

 

基本的には

①行列A、行列Bの範囲を宣言

②WorksheetFunction.MMultにそれぞれの行列をあてはめる

ということをやっているだけです。

 

非常に簡単ですね。

念のため実行してみましょう!

きちんと先ほどと同じ結果が算出されていますね。

VBAでMMULT関数を適用した結果

 

スポンサーリンク

おわりに

というわけで今回は行列の積を一発算出できるMMULT関数についてご紹介しました。

 

エクセルにはその他にも、逆行列(MINVERSE関数)を計算したり、単位行列(MUNIT関数)を計算したりできる関数があらかじめ備わっています。

 

これらも似たような操作で使用できますので、ぜひ行列計算する際には活用していきましょう!

 

このように私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。

・日々の残業時間を減らしたい。

・業務をもっと効率的にこなしたい。

・もっと勉強する時間を作りたい。

こんな思いを持っている人は、ぜひ他の記事も見てみてくださいね。

この記事が役に立ったという方は、ぜひ応援よろしくお願いします。

↓ 応援ボタン

にほんブログ村 IT技術ブログ VBAへ
にほんブログ村

それではまた!

コメント

タイトルとURLをコピーしました