vba seminar banner 
    Home   >>   Quiz   >>   Judge BMI
"BMI判定" 
"出力例"
ボディマス指数算出して、判定するプログラムを作成しろ

データは乱数を使って出力

BMI = w/t^2 [kg/m^2]

18.5未満 : やせ
18.5~25未満 : 標準
25~30未満 : 肥満
30以上 : 高度肥満
judgebmi01
"サンプルマクロ01"
"ヒント・解説01"
Public Sub Judgegrade01()

Dim i As Byte

Const n As Byte = 30

Randomize

For i = 1 To n

    Range("C" & i).Value = i
    Range("D" & i).Value = (Rnd() * 0.6) + 1.4
    Range("E" & i).Value = (Rnd() * 60) + 40
    Range("F" & i).Value = Range("E" & i).Value / (Range("D" & i).Value) ^ 2


    Select Case Range("F" & i).Value

        Case 30 To 100
            Range("G" & i).Value = "高肥満"
        Case 25 To 29.9
            Range("G" & i).Value = "肥満"
        Case 18 To 24.9
            Range("G" & i).Value = "標準"
        Case 0 To 17.9
            Range("G" & i).Value = "やせ"

    End Select

Next i

End Sub
	
  乱数を使って身長と体重のデータを出力する
"サンプルマクロ02"
"ヒント・解説02"
Public Function JBMI(height As Single, weight As Single) As Variant

Dim bmi As Single

bmi = weight / (height) ^ 2

Select Case bmi

    Case Is >= 30
        JBMI = Array(bmi, "高度肥満")
    Case Is >= 25
        JBMI = Array(bmi, "肥満")
    Case Is >= 18.5
        JBMI = Array(bmi, "標準 ")
    Case Else
        JBMI = Array(bmi, "やせ")
    
End Select

End Function

Public Sub judgeBMI02()

Dim i As Byte

Const n As Byte = 30

Randomize

For i = 1 To n
    
    Range("C" & i).Value = i
    Range("D" & i).Value = Rnd() * 0.51 + 1.5 '1.50-2.00m
    Range("E" & i).Value = Rnd() * 101 + 50 '50-150kg
    Range("F" & i).Value = JBMI(Range("D" & i).Value, Range("E" & i).Value)(0)
    Range("G" & i).Value = JBMI(Range("D" & i).Value, Range("E" & i).Value)(1)
    
Next i

With Columns("D:F") '列の書式を数字小数点以下2桁にする

    .NumberFormatLocal = "0.00_ "

End With

End Sub
	
  関数を作って判定する