
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
StDevメソッドの引数には配列も指定できるようなので、条件に合う値だけを配列に溜め込んで、それを渡してやれば、行きそうですね。
No.1
- 回答日時:
こんばんは。
標準偏差で、STDEV とお書きになっていますが、ふつうは、標本標準偏差として、
STDEVP を使いますので、以下は、それに合わせています。
ただし、No.1 と文字列になっている場合は、文字列から数字を取り出さないといけません。
'// 標準モジュール
Sub Main()
Dim Rng As Range
Dim Ret As Double
Dim Ret2 As Double
'条件セル A1からA列の最後の行まで
Set Rng = Range("A1", Cells(Rows.Count, "A").End(xlUp))
'A列で№1~№50のグループ
Ret = condiSTDEVP(Rng, Rng.Offset(, 1),51, 0)
Ret = Application.Round(Ret, 3)
'51以上のグループ
Ret2 = condiSTDEVP(Rng, Rng.Offset(, 1),51, 1)
Ret2 = Application.Round(Ret2, 3)
End Sub
Function condiSTDEVP(ByVal cndiRng1 As Range, ByVal Rng2 As Range, _
ByVal condi As Variant, Optional cmp As Integer = 0) As Variant
'引数は、条件列, 計算列, 条件値, 小なり=0, 大なり・等しい=1か、0以外
Dim c As Range
Dim dblSum As Double
Dim avrg As Double
Dim difSum As Double
Dim Ar() As Variant
Dim difSumAvrg As Double
Dim i As Long, j As Long
Dim flg As Boolean
'開始
For Each c In cndiRng1
If cmp = 0 Then
flg = Val(c) < condi '小なり-比較条件
ElseIf cmp <> 0 Then
flg = Val(c) >= condi '小なり-比較条件
End If
If flg Then
ReDim Preserve Ar(i)
'計算
If Not IsNumeric(Rng2.Cells(i + 1).Value) Then condiSTDEVP = "Err!": Exit Function
Ar(i) = Rng2.Cells(i + 1).Value
dblSum = dblSum + Rng2.Cells(i + 1).Value
i = i + 1
End If
Next
avrg = dblSum / i
For j = 0 To i - 1
difSum = difSum + (Ar(j) - avrg) ^ 2
Next
difSumAvrg = difSum / i
condiSTDEVP = difSumAvrg ^ (1 / 2)
End Function
お礼が遅くなり申し訳ありません
ありがとうございました
コードを入力してみたもののうまく走りませんでした。
もう少し頑張ってみます
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- Visual Basic(VBA) 【困っています2】VBA 追加処理の記述を教えてください。 2 2022/08/26 11:42
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- 統計学 生物統計学の質問 7 2022/05/17 13:59
- Excel(エクセル) アウトラインの小計のやり方 1 2023/03/20 11:51
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- 統計学 不偏分散を計算するときに標準偏差和をn-1で割りますが、なぜ-1なのでしょうか? 「なぜnでなくn- 5 2022/07/04 14:54
- Excel(エクセル) VLOOKUP が機能しない、その原因は何 ? 8 2022/10/19 12:06
- Excel(エクセル) excelの列幅高さが勝手に変わる(特定のPCだけ) 8 2022/07/14 16:51
- Excel(エクセル) 指定した条件でTRANSPOSE関数を使う 5 2023/08/18 19:45
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「段」と「行」の違いがよくわ...
-
エクセルで離れた列を選択して...
-
LEFT関数とIF関数の組み合わせ...
-
リストからデータを紐付けしたい
-
エクセルのソートで、数字より...
-
EXCELを最大にて開いた際、特定...
-
Accessのレポートで繰り返し表...
-
エクセルマクロでオートフィル...
-
エクセルのソートについて
-
エクセルでB列とD列を比較させ...
-
VBA 配列について
-
マクロセルの値によってセルの...
-
条件付きの標準偏差をVBAを用い...
-
エクセルマクロPrivate Subを複...
-
CSVファイルの「0落ち」にVBA
-
゙逆゙ のやつってどうすれば ゙順...
-
Excel文字列一括変換
-
【VBA】ピボットテーブルの範囲...
-
エクセルで複数列の検索をマク...
-
【Excel VBA】列幅の設定
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「段」と「行」の違いがよくわ...
-
エクセルで離れた列を選択して...
-
VLOOKUPの列番号の最大は?
-
LEFT関数とIF関数の組み合わせ...
-
VBA 指定した列にある日時デー...
-
Excelの行数、列数を増やしたい...
-
CSVファイルの「0落ち」にVBA
-
列方向、行方向の定義
-
エクセルのソートで、数字より...
-
Excel文字列一括変換
-
VBAで別ブックの列を検索し、該...
-
エクセル マクロ 範囲の値を上...
-
VBAで重複データを合算したい(...
-
エクセル マクロ 範囲指定で...
-
VBAで結合セルを転記する法を教...
-
エクセルで最初の行や列を開け...
-
エクセルマクロPrivate Subを複...
-
土日の列幅の自動変更を教えて...
-
最近急にVBAの処理速度が遅くな...
-
エクセルでセル12個間隔で合...
おすすめ情報