- 締切済み
棄却検定マクロの作成(for Excel)
Excelでスミルノフ・グラブス検定を行いたいのですが、関数として用意させておらず、既存の関数を組み合わせて、定義式を分割して行っています。 そこで、マクロを作成し、よりスマートに行いたいのですが、やはりVBAの知識が多少必要となるのでしょうか。 想定している機能は、『データを範囲指定して実行すると、異常値が色を変えて表示される』ようなものです。 マクロのイメージだけでも提示して頂けると有難いです。(因みに、当方はVBA経験はゼロです。役に立つとは思えませんが、FortranとJAVAのプログラム作成経験はあります。)
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
検定とかは弱いもので、最後までお付き合いする力はありませんが、 http://aoki2.si.gunma-u.ac.jp/lecture/Grubbs/Grubbs.html の例で話をします。 A1:J2に 133 134 134 134 135 135 139 140 140 140 141 142 142 144 144 147 147 149 150 164 が入っているとして、 関数式なら平均は=AVERAGE(A1:J2) 分散は=VAR(A1:J2) で値は141.7 55.06315789 でWEBと一致します。 VBAでは Sub test02() Cells(10, 1) = WorksheetFunction.Average(Selection) Cells(11, 1) = WorksheetFunction.Average(Range(Cells(1, 1), Cells(2, 10))) Cells(12, 1) = WorksheetFunction.Var(Selection) Cells(13, 1) = WorksheetFunction.Var(Range(Cells(1, 1), Cells(2, 10))) End Sub でA10:A13に 141.7 141.7 55.06315789 55.06315789 となります。 エクセルの関数が全て「WorksheetFunction.」をつけて使えるとは限りません。個別にチェック要。 またVBAの4つの式のうちSelectionを使った2つは、実行前にデータ(標本)のセルを範囲指定しておかないとなりません。その代わり、毎回範囲を変化させたり融通が利くわけです。 セルはCells(行番号数,列番号数)で値を取れます。 エクセルの関数の本を買ってきて、本検定ではどの関数を使うか調べてください。VarPなどもありますから。 あとは加減乗除算はそのままプログラムに書けば良い。Javaと変らないでしょう。絶対値はABSがVBAにあります。 SQR(平方根、関数)もあります。 残る疑問は (1)データ数 (2)エクセルのシートのセルにどのように入るのか (3)統計数値表からプログラムで引くのか (4)アウトプット帳票は注文あるのか (5)データチェックとか必要か
補足
データ数は可変でして、可能ならば領域選択した数値群を実行マクロの引数として渡して演算した後、質問に書いた通り、元の数値群の内の異常値のみを色を変えて再表示したいのです。Excelの関数のように複数のセルをマウスで選択して、ダイナミックに(?)数値データを渡せることができるといいのですが。