アプリ版:「スタンプのみでお礼する」機能のリリースについて

例えば、5つの数字があります。
A1:0.1、A2:0.6、A3:0.2、A4:0.3、A5:0.4
平均「AVERAGE(A1:A5)」は0.32になります。

標準偏差「STDEV(A1:A5)」:0.19を求め(σ:シグマ)
平均±σの範囲内にある値の平均を求めたいと思っています。
つまり「平均-σ:0.13~平均+σ:0.51」の範囲内にある数字の平均です。

求めたい結果は、A3:0.2,A4:0.3,A5:0.4の平均で0.3となるのですが、
これらを自動的にマクロか何かで計算させる方法はあるのでしょうか?
(「ある範囲内にある数字を平均化」又は「ある範囲外の数字を棄却して平均化」)

ご存じの方教えて下さい。
宜しくお願いします。

A 回答 (2件)

Selectionを使い、一般化してあります。


ワークシート上のデータの入っているセルを範囲指定して
それから実行してください。
(1)データが1列でなくてもできそうです。
飛び飛びセルはテストしてません。
(2)Msgboxは途中確認のために多用しています。
Cells(i,"A")=等と置換えるのも良いと思います。
(3)条件に合うものを、例としてE列に書き出しています。j列に書き出すのならCells(n, "E") = clともう一箇所の"E"を"J"に変えてください。
(4)後半について充分テストしてません。なにかあれば
言ってください。
(5)Stdevを使い、Stdevpを使っていません。問題の
例の数値から推定して。
Sub test01()
'a = WorksheetFunction.Average(Range("a1:a5"))
a = WorksheetFunction.Average(Selection)
MsgBox a
's = WorksheetFunction.StDev(Range("a1:a5"))
s = WorksheetFunction.StDev(Selection)
MsgBox s
Dim cl As Range
n = 1
For Each cl In Selection
If cl > a - s And cl < a + s Then
Cells(n, "E") = cl
n = n + 1
End If
Next
avgb = WorksheetFunction.Average(Range(Cells(1, "E"), Cells(n, "e")))
MsgBox avgb
End Sub
    • good
    • 0
この回答へのお礼

ご回答有り難うございます。

目的のものが大筋で出来ました!
あとは、セルを少し移動したりして
完成させたいと思います。

どうも丁寧に有り難うございました。

お礼日時:2003/06/27 10:59

sumifでどうでしょう。

    • good
    • 0
この回答へのお礼

sumifは知っていたのですが、合計ではなくて、
平均を知りたいという質問でした。
有り難うございました。

お礼日時:2003/06/27 10:58

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