• 締切済み

異なるシートの配列を参照し、相関係数を求める方法

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 添削よろしくおねがいします。

みんなの回答

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.1

 先ず、 ●Range,Cellsの組み合わせでシート指定 http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_200_070.html に書かれた >このコードは、「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)

a04sa013
質問者

お礼

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