「夫を成功」へ導く妻の秘訣 座談会

身長と体重を10づつ入力してそれぞれの平均、分散、標準偏差、
身長と体重の共分散、相関係数を求めるプログラミングを
VisualBasicの分岐処理、繰り返し処理、配列の概念を利用して作りたいのですが
全然分かりません。教えてください。お願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

皆さん出きる問題だと思う。

しかし回答が少ない。
もう少し自分で勉強しなさいと言う風に私は感じる。
しかし初めは皆んな習い覚えるのだし、自分も充分わかってないのだし、やって見ようと思いました。
(1)VisualBasicを使うのですね。
(2)普通にやると、実行するとForm1が自動的に出来てしまうので、これを使わないようにしようと思い、VBE画面のプロジェクトのForm1を右クリックしてForm1の解放をクリックしました。
(3)普通は標準モジュールのSubの後はルーチン名はなんでも良いが、下記の場合はMainを要求してくるのでSub main()ではじめる。
(4)昔のBASICではINPUTだったが、VBなのでINPUTBOX関数で、入力値を取った。
昔はPRINT文だったが、表示にはMSGBOX関数を
使った。
-------
Sub main()
Dim i ,n As Integer
Dim d(10) As Double
Dim s, av As Double
s = 0
For i = 1 To 10
x = InputBox(i & "番目の身長 = ")
d(i) = x
s = s + x
Next i
n = i - 1
MsgBox n & "件入力"
av = s / n
MsgBox "平均=" & av
'-----
s = 0
For i = 1 To 10
s = s + (d(i) - av) ^ 2
Next i
MsgBox "偏差平方和=" & s
std = (s / n) ^ (1 / 2)
MsgBox "標準偏差=" & std
End Sub
エクセルでは,下記で求められます。検算に使ってください。
(1)平均Average(A1:A10)
(2)偏差平方和DEVSQ(A1:A10)
(3)標準偏差STDEVP(A1:A10)に当たります。
もう1種の標準偏差STDEVがありますので注意。
----
For-Nextを使わないなら(平均の部分まで)
Sub main()
Dim i, s, av As Double
s = 0
i = 0
p01:
If i = 10 Then GoTo p02
x = InputBox(i + 1 & "番目の身長 = ")
s = s + x
i = i + 1
GoTo p01
p02:
MsgBox i & "件入力"
av = s / i
MsgBox "平均=" & av
End Sub
です。
    • good
    • 0

まず、それぞれの計算式は わかってるものとします。


計算式が、わからなければ、問題外ですから。

テキストボックスを 10個、設置します。
平均を出すには それぞれのテキストボックスのテキストを合計して
10で割ります。
このようにして、他も算出してください。

この回答への補足

フォームはすでに出来ています。
身長はtext1をコピーして
text1(0) text1(1) text1(2) text1(3) text1(4) text1(5) text1(6) text(7)text(8) text(9)というように配列を使っています。
体重もtext2で同じようになっています。
command1をクリックすると、
身長の平均をtext3、    体重の平均をtext4、
   分散をtext5、       分散をtext6、
   標準偏差をtext7      標準偏差をtext8、
   共分散をtext9 相関係数をtext10
に表示できる    
具体的なプログラムを教えてください。
Private sub command1_click



End sub
の空欄に入力する内容を教えてください。

補足日時:2003/01/09 22:07
    • good
    • 0

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

このQ&Aと関連する良く見られている質問

Q標準偏差値の求め方

標準偏差値を求めるにはどのような記述が必要でしょうか
?エクセルなら、Stdev関数一発で求められますが、今回
の場合、該当する数値の合計変数しか用意しているものが
なく、それにどうからめるかが分かりません。
すいませんが、助言お願いします。

Aベストアンサー

 
[ Google 検索: VB 偏差値 ]
http://www.google.co.jp/search?hl=ja&ie=UTF-8&oe=UTF-8&c2coff=1&q=VB+%E5%81%8F%E5%B7%AE%E5%80%A4&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja

Google検索の1番目に下記があり、これがそのまま使えそうです。

[Ishikawa Club HomePage <Sample program download>]
http://tokyo.cool.ne.jp/kanain/SfDwLd.html

# 性能が悪くても構わないなら、Excelをオートメーションで使うのが簡単かもしれません。(笑

参考URL:http://www.google.co.jp,http://tokyo.cool.ne.jp/kanain/SfDwLd.html

Qエクセル STDEVとSTDEVPの違い

エクセルの統計関数で標準偏差を求める時、STDEVとSTDEVPがあります。両者の違いが良くわかりません。
宜しかったら、恐縮ですが、以下の具体例で、『噛み砕いて』教えて下さい。
(例)
セルA1~A13に1~13の数字を入力、平均値=7、STDEVでは3.89444、STDEVPでは3.741657となります。
また、平均値7と各数字の差を取り、それを2乗し、総和を取る(182)、これをデータの個数13で割る(14)、この平方根を取ると3.741657となります。
では、STDEVとSTDEVPの違いは何なのでしょうか?統計のことは疎く、お手数ですが、サルにもわかるようご教授頂きたく、お願い致します。

Aベストアンサー

データが母集団そのものからとったか、標本データかで違います。また母集団そのものだったとしても(例えばクラス全員というような)、その背景にさらならる母集団(例えば学年全体)を想定して比較するような時もありますので、その場合は標本となります。
で標本データの時はSTDEVを使って、母集団の時はSTDEVPをつかうことになります。
公式の違いは分母がn-1(STDEV)かn(STDEVP)かの違いしかありません。まぁ感覚的に理解するなら、分母がn-1になるということはそれだけ結果が大きくなるわけで、つまりそれだけのりしろを多くもって推測に当たるというようなことになります。
AとBの違いがあるかないかという推測をする時、通常は標本同士の検証になるわけですので、偏差を余裕をもってわざとちょっと大きめに見るということで、それだけ確証の度合いを上げるというわけです。

Q標準偏差の求め方

現在,Oracleを使って開発を行っています。
そこで、標準偏差を求めたいのですが・・・
Excelでいう「STDEVP」と同じ機能を持つ関数などはないのでしょうか?
Oracleには「STDEV」という関数しかありません。

「Excelにデータを書き込んで、STDEVP関数を使う」という方法では
時間がかかりすぎるので、使えません。

何かよい方法をご存知でしたら、教えてください。
よろしくお願いしますm(_ _)m

Aベストアンサー

ごめんなさい。
STDEV ではなく、STDEVP でしたね。
それでは、STDDEV_POP 関数は使用できませんでしょうか?

Q別のシートから値を取得するとき

Worksheets("シート名").Activate
上記のを行ってから別シートの値を取得するのですが、
この処理を行うと指定したシートへ強制的にとんでしまいます。。。

※イメージ
For ~ To ~
  Worksheets("シートA").Activate
  シートAの値取得
       :
  Worksheets("シートB").Activate
  シートBの値取得
Next

このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。
シートを変えずに他のシートから値を取得する方法はないのでしょうか。
教えてください!

Aベストアンサー

Worksheets("シートA").Range("A1")

みたいな感じでできませんか?

QVBA 配列に格納した値の平均のやり方についてお教え願います

いつもお世話になります。
配列に格納した値の平均のやり方についてお教え願います。
現在、実験測定データの移動平均(下記avg(x,1))を計算をしたいのですが、
配列に格納した値の平均が思うように計算できず困っております。

a =Range("A1:A20000")‘測定データを配列に格納
avg(x, 1) = Application.WorksheetFunction.average(a(x, 1), a(x + 5, 1))

という記述方法ではa(x, 1)とa(x + 5, 1)の2点の平均になってしまいます。
これをa(x, 1), a(x+1, 1),a(x+2, 1),a(x+3, 1) ,a(x+4, 1) ,a(x+5, 1)の5点の平均が計算できる記述方法はないでしょうか?

○実際の式は下のようなもので移動平均の平均区間yも変化します。
Dim avg(1 To 20000, 1 To 1)

-前式省略-

For y = 1 To 20000

-途中式省略-

a =Range("A1:A20000")‘測定データを配列に格納
For x = 1 To 20000
avg(x, 1) = Application.WorksheetFunction.average(a(x, 1), a(x + y, 1))
‘↑これでは2点の平均値になってしまいます。
Next

-途中式省略-

Next

-後式省略-

○Range(“B1”)=AVERAGE(A1:OFFSET(A1,y-1,0))
Range(“B2”)=AVERAGE(A2:OFFSET(A2,y-1,0)) 
・・・
というふうにセルに一つずつaverage関数を入力すれば移動平均も計算できるのですが、繰り返し回数が多いため、計算に非常に時間がかかります。そのため上記配列を利用したもので計算したいと思います。

○ネットでヒントを見つけたのですが↓
Set ran = Range(Range("A1"), Range("A1").End(xlDown))
Range("C4").Value = WorksheetFunction.average(ran)
こう記述すればある範囲内の平均を求められるようですが、
Set ran= 以降の部分をRange(***)ではなく、
Set ran = (a(x, 1), a(x + y, 1)) ←a(x, 1)~a(x + y, 1)まで、というイメージですが・・・
というふうに範囲を配列で表すやり方を教えて頂けるだけでも結構です。

excel2003です。
以上、よろしくお教え願います。

いつもお世話になります。
配列に格納した値の平均のやり方についてお教え願います。
現在、実験測定データの移動平均(下記avg(x,1))を計算をしたいのですが、
配列に格納した値の平均が思うように計算できず困っております。

a =Range("A1:A20000")‘測定データを配列に格納
avg(x, 1) = Application.WorksheetFunction.average(a(x, 1), a(x + 5, 1))

という記述方法ではa(x, 1)とa(x + 5, 1)の2点の平均になってしまいます。
これをa(x, 1), a(x+1, 1),a(x+2, 1),a(x+3, 1) ,a(x+4, 1) ,a(x+5, 1)...続きを読む

Aベストアンサー

ワークシート関数で手抜きしようとしないで
簡単な平均算出関数を定義すれば済むことではありませんか?

Function myAvg( ar() as integer, nStart, nCount ) as double
  dim n as integer, dSum as double
  dSum = 0
  for n = nStart to nStart + nCount -1
    dSum = dSum + ar(n,1)
  next
  myArg = dSum / nCount
End Function

呼び出し側で
dim dRes() as Double
a = Range("A1:A20000").Value
ReDim dRes( 1 to Ubound(a,1), 1 to 1)
for n = 1 to 19900
  dRes(n) = myAvg( a, n, 100 )
next
Range("B1:B20000").value = dRes
といった具合で ・・・

ワークシート関数で手抜きしようとしないで
簡単な平均算出関数を定義すれば済むことではありませんか?

Function myAvg( ar() as integer, nStart, nCount ) as double
  dim n as integer, dSum as double
  dSum = 0
  for n = nStart to nStart + nCount -1
    dSum = dSum + ar(n,1)
  next
  myArg = dSum / nCount
End Function

呼び出し側で
dim dRes() as Double
a = Range("A1:A20000").Value
ReDim dRes( 1 to Ubound(a,1), 1 to 1)
for n = 1 to 19900
  dRes(n)...続きを読む

Qエクセル マクロで指定フォルダを開く

エクセルにて
指定フォルダを開く、マクロがあれば教えて頂けないでしょうか。
よろしくお願いいたします。

Aベストアンサー

こんにちは。

こういうものですか?
開くフォルダを変えたいときは targ に与えるパスを変更します。

Sub OpenFolders()
Dim targ As String
targ = "C:\"
Shell "C:\Windows\Explorer.exe " & targ, vbNormalFocus
End Sub


人気Q&Aランキング