VBAの問題がわからないのでどなたか教えてください。
【問題】
表1には4名分の体重データがある。合計、平均、分散と標準偏差を求めるプログラムを作成しなさい。
.表1の体重データ
ID 体重
A 50
B 60
C 74
D 60
なお、表1のデータはSheet1に準備すること。
動作は以下のようなものを想定しています。
0.プログラム実行直後は画像のようなフォームが表示される。
1.計算ボタンを押すと合計、平均、分散と標準偏差が一度に表示される。
という問題なのですが、合計と平均の求め方はわかったのですが、分散と標準偏差の求め方がわかりません(>_<)
ちなみに合計と平均は下に書いたようにしてできました。
分散と標準偏差もDo while文を使って求めたいです、どなたかご教授お願いいたします。
Private Sub CommandButton1_Click()
Dim intPerson As Integer '人数
Dim dblSum As Double '合計
Dim dblAvg As Double '平均
Dim dblbun As Double '分散
Dim dblhyou As Double '標準偏差
Dim intRow As Integer
Dim intCol As Integer
'変数を初期化
dblSum = 0
dblAvg = 0
dblbun = 0
dblhyou = 0
'[データ]シート上の点数データの行番号の開始位置
intRow = 2
'[データ]シート上の点数データの列番号の判定
intCol = 2
Do While Worksheets("Sheet1").Cells(intRow, intCol) <> ""
dblSum = dblSum + Worksheets("Sheet1").Cells(intRow, intCol)
intPerson = intPerson + 1
intRow = intRow + 1
Loop
dblAvg = dblSum / intPerson
Label6.Caption = dblSum
Label7.Caption = dblAvg
End Sub
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
学生さんですか?
ご質問者さんには責任はないけれども、ずいぶん古い教本のようです。
全体的に、約20年以上前のスタイルです。
>分散と標準偏差もDo while文を使って求めたいです
学校でしたら、英語の短縮形を使うべきです。Variance( of Population) と Standard Deviation( of Population) ->一例: Vari, stDevi
それに、Prefix は、ほどほどにですね。
intRow とか、intCol というのも、データ型が Integer というのは、たぶん、95時代だと思います。
それに、Cells オブジェクトに.Value プロパティが抜けています。正規のコードでは省略しません。.Value は、暗黙のプロパティとは言いますが、Default のプロパティではありません。
'Label7.Caption = dblAvg の後につけてください。
''---
With Worksheets("Sheet1")
intRow = 2
intCol = 2
Do While .Cells(intRow, intCol).Value <> ""
dblbun = dblbun + (.Cells(intRow, intCol).Value - dblAvg) ^ 2
intRow = intRow + 1
Loop
End With
dblbun = dblbun / intPerson
dblhyou = dblbun ^ (1 / 2)
'Debug.Print Fix(dblbun * 100 + 0.5) / 100 '小数点第3位四捨五入
'Debug.Print Fix(dblhyou * 100 + 0.5) / 100 ' 〃
'ラベルがあるとすると
Label8.Caption = CStr(Fix(dblbun * 100 + 0.5) / 100 )
Label9.Caption = CStr(Fix(dblhyou * 100 + 0.5) / 100)
'dblbun, dblhyou のまま入れてもエラーは起きないけれど、少し乱暴です。
No.2
- 回答日時:
Label6.Caption = dblSum
Label7.Caption = dblAvg
のあとに以下の行を追加してください。
標準偏差と分散の求め方は下記URLを参考にしています。
https://sci-pursuit.com/math/statistics/standard …
------------------------------------------------------
Dim dblbun2 As Double '分散の2乗の和
Dim dblsa As Double '平均との差
dblbun2 = 0
For intRow = 2 To 1 + intPerson
dblsa = Abs(Worksheets("Sheet1").Cells(intRow, "B").Value - dblAvg)
dblbun2 = dblbun2 + dblsa * dblsa
Next
dblbun = dblbun2 / intPerson
dblhyou = Sqr(dblbun)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vbaの計算 if elseと範囲について 6 2022/11/26 01:49
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) VBAプログラミング 2 2022/11/27 12:07
- 数学 【 数I 分散 】 3 2023/02/26 21:55
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「Nullの使い方が不正です」の...
-
XMLでデータとして画像を指定す...
-
【C#】textBoxの指定行のデータ...
-
Excel VBAで1週間毎にカテゴリ...
-
エクセルのマクロ コンボボッ...
-
【VB.NET】Excelの最終行までの...
-
VBAでアクセスDBからデータの取...
-
エクセルのセル最終行取得
-
C# DataTableに最後に追加した...
-
VB2005 で NetworkStream で取...
-
MSFlexGrid 行選択状態
-
アクセスでウェブ上のデータを...
-
VBAの問題がわからないのでどな...
-
VB webデータの取得
-
エクセルVBA WEBからデータ取...
-
2つの項目(日付、場所)が一...
-
部品表
-
エクセルのCSV読み込みについて
-
エクセルのWEBクエリ
-
COBOL 最新のデータを1件取得...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【C#】textBoxの指定行のデータ...
-
VBAでアクセスDBからデータの取...
-
「Nullの使い方が不正です」の...
-
XMLでデータとして画像を指定す...
-
VBAコンボボックスの内容が反映...
-
C# DataTableに最後に追加した...
-
【ExcelVBA】値を変更しながら...
-
【VB.NET】Excelの最終行までの...
-
COBOL数値転記の仕様
-
Excel VBAでフォルダ内の全テキ...
-
富士通(汎用機)のAIMについて
-
MSFlexGrid 行選択状態
-
Excel VBAで1週間毎にカテゴリ...
-
access vba 『○○件づつ表示』を...
-
Excel VBA で日付を4ケタの数値...
-
Excel VBAでグループ毎に集計す...
-
java / jsp selectedについて
-
ExcelVBAで戻り値を返すには
-
batでレジストリキーから読み取...
-
エクセルVBA WEBからデータ取...
おすすめ情報