Re: [VBA ] 請問如何呼叫矩陣

看板Visual_Basic作者 (㊣烏笨禿,又笨又禿)時間16年前 (2008/06/17 23:26), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/3 (看更多)
: → MOONRAKER:你自己寫成一個函數就夠好了,就我看excel的mmult()實在 : → MOONRAKER:是微軟最厲害的整人發明,用VBA呼叫也不會方便 : → MOONRAKER:如果你需要反矩陣之類困難的功能 再研究怎麼呼叫吧 說是這麼說,我還是把它幹出來了,也不知道是基於賭爛還是研究精神 -_- 在VBA中呼叫excel工作表函數的標準方法是使用application.worksheetfunction物件 格式是application.worksheetfunction.<函數名字>(<參數>...) 但是mmult()函數有一個特性,它不是傳回一個純量,是矩陣 在excel中的用法也特別難搞(本部份略,各位可以自己試一試,便知其整人) excel documentation在這一部份也說明有限 沒有解釋矩陣函數這種傳回非純量的函數在VBA中怎麼搞 不過有一個簡單的辦法,用正確的方法操作,再把矩陣錄下來研究就行 研究的過程也省略,總之我發現可以這樣寫 range(<結果矩陣>).select selection.formulaarray="mmult(<矩陣1>,<矩陣2>)" 這裡所有的矩陣都必須存在worksheet上 寫法用"F6:G7"這種格位名稱就可以了,如mmult(a1:c3, e4:g6) 當然在VBA裡面要變出這種格位名稱有點麻煩 其實我不知道有什麼標準的方法,不過至少這樣確實可以得出結果矩陣 至於結果矩陣要放在哪裡,要規劃多長多寬,就要自己在程式裡處理 前面也說了,這其實沒有多方便,自己寫一個函數也很簡單 但是在使用excel的其他矩陣函數時就有用了,例如反矩陣 這就非常實用,因為自己寫反矩陣的程式相當麻煩 range(<結果矩陣>).select selection.formulaarray="minverse(<矩陣1>)" 要把算出來的內容存到VBA陣列,就自己用cells去worksheet上harvest就好 聽說還可以用index()工作表函數,不過我懶了 :P   -- BATCH 1 (4/20) - 如何隱身 - SPAM - 英國殺人笑話 - http://tinyurl.com/65vvbx BATCH 2 (5/10) - 當眾脫褲 - 主教 - 傻蛋奧運會 - http://tinyurl.com/68grk7 BATCH 3 (6/14) - 買張床 - 切達大俠 - 伐木人之歌 - http://tinyurl.com/3zpyx5 ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ 蒙帝派松正體中文計畫 Spam-a-lot and enjoy the pythonesque delight! ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.115.200.167
文章代碼(AID): #18LzUwCg (Visual_Basic)
文章代碼(AID): #18LzUwCg (Visual_Basic)