2020年12月6日 星期日

VBA:矩陣計算(相乘)

一、前言:

在算迴歸時,有使用到矩陣計算,所以小編分享一下矩陣乘法計算;

矩陣乘法一開始我在寫的時候是用雙迴圈概念,後來發現不對,有些組合永遠跑不到,所以改成用陣列方式來完成;目前還沒想到如何多矩陣相乘,還停在2個矩陣相乘。

二、發想:

透過Application.InputBox來取的資料儲存格位置。

副程式:

矩陣相乘有一部分是要與前回計算結果相加,這部分單獨靠迴圈明顯不足,這邊先寫一個副程式,名稱叫MATRIX_CAL,透過丟入2個矩陣當參數方式,用來計算矩陣相乘積與加總和。

主程式:

A矩陣:用I迴圈堆壘第一個矩陣成A矩陣,

B矩陣:用J迴圈堆壘第二個矩陣成B矩陣,並用J迴圈控制呼叫MATRIX_CAL的次數,然後每次呼叫時把A與 B矩陣當引數丟給MATRIX_CAL。

輸出:使用之前小編寫的sheet_name_check_delete這個副程式,下文字資料的引數"矩陣相乘結果"做執行;新增表單後,透過新的I與J迴圈將計算結果寫入工作表中

三、來做做:

先做一個VBA的AxtiveX命令按鈕

然後貼上code:


測試資料:

圖1.A與B矩陣

操作:貼上以上CODE後,點選按鈕後,會有對話框做如下操作。
 
圖2.A矩陣輸入(位置任選)

圖3.B矩陣輸入(位置任選)

圖4.結果

以前老長官名言"問題僅有一個,方法有好幾個"
似乎在程式語言當中,也是這樣,小編簡單整理與紀錄自己的小作品


沒有留言:

張貼留言

職場毒癌:你憑什麼以為你十年寒窗,抵得我三代從商

你憑什麼以為你十年寒窗,抵得我三代從商——這句話已經記不得是從哪裡看到的,可能是某部劇,也可能是某篇 FB 文章標題。 但最近,特別有感。 為什麼會有這種感觸? 職場上有個同事,一路慢慢升到課長,好歹也是管理職,雖說不上鐵飯碗,但在多數人眼裡也算穩定。 結果呢?輾轉換了兩個製造課...