2017-11-23 9 views
0

こんにちは私は、マクロを使用して2つの行列を入力して乗算できるようにしたいと考えています。VBAで行列を正しく定義する方法は?

これらの行列の次元は変化しますが、簡単にするために、それらが2x2行列であると仮定しましょう。

それでは、どのように私はこれまで私が持っている、これをやって行くのです。

Set X = Range("A1", Range("A1").End(xlDown).End(xlToRight))  
Set Y = Range("E1", Range("E1").End(xlDown).End(xlToRight)) 
Range("W1", Range("W1").Offset(2, 2)).Select 
Range("W1").Value = "{=MMULT(X,Y)}" 

これは明らかに間違っているが、私はこの問題を解決する方法がわかりません。

助けが必要ですか?

ありがとうございます!

+0

可能な重複[どのように私はVBAで式に変数を挿入することができます](https://stackoverflow.com/q/42503316/11683) – GSerg

答えて

0
Sub t() 
Dim x As Range 
Dim y As Range 
Set x = Range(Range("A1"), Range("A1").End(xlDown).End(xlToRight)) 
Set y = Range(Range("E1"), Range("E1").End(xlDown).End(xlToRight)) 
Range("h1:i" & Range("A1").End(xlDown).Row).FormulaArray = "=" & x.Address & "*" & y.Address 
End Sub 
+0

[行列の乗算] (https://en.wikipedia.org/wiki/Matrix_multiplication)は、5年の掛け算とは異なります。 – GSerg

0

あなたは単なる数字として計算結果を保存ライン.Value = .Valueを削除W1に数式を保持したい場合は、この方法

Dim m1 As Range 
Dim m2 As Range 
Dim res As Range 

Set m1 = Range("A1").Resize(2, 2) 
Set m2 = Range("E1").Resize(2, 2) 

Set res = Range("W1").Resize(2, 2) 

With res 
    .FormulaArray = "=MMULT(" & m1.Address & "," & m2.Address & ")" 
    .Value = .Value ' saves result of formulae calculation 
End With 

でそれを行うことができます。また

xlDownxlRightには充分に注意してくださいVBA- Why End(xlDown) will take me to the very bottom of my excel

関連する問題