dポイントプレゼントキャンペーン実施中!

visual basicを学んでまだ1週間です。
Sheet1とSheet2に配列が格納されているのですが、これらを用いて相関係数が求めたいのですが、うまくいきません。

どのように書いているかというと、


Sub 2つのシート間の配列から相関係数を求める()
Dim correlation as Double

correlation = Application.WorksheetFunction.Correl(Worksheets("Sheet1").Range(Cells(1, 2), Cells(1, 567)), Worksheets("Sheet2").Range(Cells(1, 2), Cells(1, 567)))

Cells(2,1).Value = correlation

End

添削よろしくおねがいします。

A 回答 (1件)

 先ず、


●Range,Cellsの組み合わせでシート指定
http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub0 …
に書かれた
>このコードは、「Sheet1」がアクティブなシートなら動作しますが、そうでないと実行時エラーになります。
のところの説明をご覧ください。

>シートを明示しないRangeプロパティとCellsプロパティは、
>標準モジュールならアクティブなシート、シートモジュールならそのシートで作用します。
とのことですので、こんな感じになりましょうか。。。

Dim myRng1 As Range
Dim myRng2 As Range
With Worksheets("Sheet1")
 Set myRng1 = .Range(.Cells(1, 2), .Cells(1, 167))
End With
With Worksheets("Sheet2")
 Set myRng2 = .Range(.Cells(1, 2), .Cells(1, 167))
End With
correlation = Application.WorksheetFunction.Correl(myRng1, myRng2)
「異なるシートの配列を参照し、相関係数を求」の回答画像1
    • good
    • 0
この回答へのお礼

大変参考になりました。
研究をハイスループットに進めたいので、Visual Basicを使ってみようと思ったのですが、どうもWorkSheetプロパティがよくわかっていないみたいです。
紹介していただいたページを参考にしたいと思います。
初歩的な質問なのに丁寧にお答えいただきありがとうございました。

お礼日時:2010/02/26 15:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!