2017-02-06 6 views
0

私はVBAの組み込み関数を使用するコードを持っていますが、Application.mmult()Application.minverseExcel VBAでApplication.someBuilt-InFunctionを使用する際にショートカットを回避する方法はありますか?

Function MReg (Rango as Range) as variant 
MReg=application.mmult(application.minverse(application.mmult(Rango,application.transpose(Rango))),application.transpose(Rango)) 

End function 

Application.がnessesaryないように、VBAを設定する方法はあります:

は、これは私のコードですか?

答えて

0

あなたはすでに2つの良い答えを持って、それにもかかわらず、これは、よりエレガントなものです:

はその意志の機能を作成します。あなたが必要とするものを、構造化された方法で行います。

Public Function MULT(M1 As Range, M2 As Range) As Variant 
MULT = Application.MMult(M1, M2) 
End Function 

Public Function TRANSPOSE(M1 As Range) As Variant 
TRANSPOSE = Application.TRANSPOSE(M1) 
End Function 

Public Function INVERSE(M1 As Range) As Variant 
INVERSE = Application.MInverse(M1) 
End Function 

次にあなたが問題なくあなたの「メイン」関数にこれらの関数を使用することができますし、私ははるかに良い見てみましょう:

Function MREG(X As Range, Y As Range) As Variant 
MREG = MULT(MULT(INVERSE(MULT(X, TRANSPOSE(X))), TRANSPOSE(X)), Y) 
End Function 

私はあなたが複数の回帰を実行するための関数を作成したいと仮定、だから私は少しあなたのコードを変更しました。

2

これはあなたのためにそれを行います。

Function MReg (Rango as Range) as variant 
    With Application 
    MReg= .mmult(.minverse(.mmult(Rango,.transpose(Rango))),.transpose(Rango)) 
    End With 
End function 
+0

また、読みやすくするためにヘンプに余分な行を使用することもできます。私はこれを頻繁に使う。 たとえば、.Mmultの後に改行を追加してください。改行してください。改行など。 コメントにコードを追加していないようですが、私は例を挙げていません。 – martes

+0

コメントありがとうございました。私は行の継続が何であるかを知っていますので、例の必要はありません。それは文体的な好みであり、私は上記のように私のコードを好む。 – Kyle

2

使用With -End Withブロック

Function MReg(Rango As Range) As Variant 
    With Application 
     MReg = .MMult(.MInverse(.MMult(Rango, .Transpose(Rango))), .Transpose(Rango)) 
    End With 
End Function 
関連する問題