人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: nankichi
●カテゴリ:ウェブ制作
✍キーワード:Excel VBA ユーザー 定義 配列
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● akibare
●50ポイント

http://cyberlearn.fau.edu/sta6113/correlat.htm

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

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

◎質問者からの返答

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ