excelのCORREL(配列1,配列2)と全く同じ機能をVBAのユーザー定義関数で再現すると、どのようにかけますか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2004/07/05 23:00:47
  • 終了:--

回答(1件)

id:akibare No.1

akibare回答回数157ベストアンサー獲得回数52004/07/06 13:42:31

ポイント50pt

効率悪いですが、計算方法を分かりやすくするために関数を分けました(列の集合のみ対応&エラーチェックなしなので本番では使わないでください)。

Function MY_CORREL(SetA As Range, SetB As Range) As Double

AverageA = MY_AVERAGE(SetA)

AverageB = MY_AVERAGE(SetB)

StdDevA = MY_STDDEV(SetA)

StdDevB = MY_STDDEV(SetB)

For i% = 1 To SetA.Count

V = V + (SetA(i%, 1) - AverageA) * (SetB(i%, 1) - AverageB) / (StdDevA * StdDevB)

Next

MY_CORREL = V / SetA.Count

End Function

Function MY_AVERAGE(SetA As Range) As Double

For Each c In SetA.Cells

SumA = SumA + c.Value

Next

MY_AVERAGE = SumA / SetA.Count

End Function

Function MY_STDDEV(SetA As Range) As Double

AverageA = MY_AVERAGE(SetA)

For Each c In SetA.Cells

V = V + (c.Value - AverageA) * (c.Value - AverageA)

Next

MY_STDDEV = Sqr(V / SetA.Count)

End Function

id:nankichi

ありがとうございます!ちょっと今すぐには時間がとれないのですが、しっかり試してみます。

2004/07/07 21:07:35

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません