BMIを計算するマクロ

マクロ講座81回 If~Then~ElseIfステートメント
数値によって、判定を振り分け。 条件が複数あるので、使うのは、If~Then~ElseIfステートメント

BMIを計算するマクロ Excel2013 マクロ講座 81回

BMIを算出する If~Then~ElseIf

ExcelVBAでBMI値を算出するマクロを作成しましょう。BMIの数値によって肥満の程度を判定することができます。


(サンプルファイルは、こちらから マクロ81回サンプルデータ

条件に一致するかどうかで処理を振り分ける

BMIを算出したら、その数値によって、判定を振り分けます。 条件が複数あるので、使うのは、If~Then~ElseIfステートメントです。下の解説図では、処理は4つですが、ElseIf ~Thenを追加することで条件をさらに増やす事ができます。
BMIを計算するマクロマクロ1
今回は、すでに身長と体重を計測した表とBMIの判定基準が表示された表をもとにBMIと判定を入力していきます。
BMIを計算するマクロマクロ2
BMIによる判定は6通りありますから、If~Then~ElseIfを使ったコードは以下のようになります。BMI、判定は変数として宣言しています。
      If BMI < 18.5 Then
        判定 = "低体重"
      ElseIf 18.5 <= BMI And BMI < 25 Then
        判定 = "標準"
      ElseIf 25 <= BMI And BMI < 30 Then
        判定 = "肥満1度"
      ElseIf 30 <= BMI And BMI < 35 Then
        判定 = "肥満2度"
      ElseIf 35 <= BMI And BMI < 40 Then
        判定 = "肥満3度"
      Else
        判定 = "肥満4度"
      End If

繰り返し処理をするFor~Nextステートメント

上記のコードをFor~Nextで挟んで、1行ごとに判定していくようなコードを書いてやります。
BMIを計算するマクロマクロ3
身長と体重が記入された表でBMIを算出し肥満度を判定するコードは以下のようになります。
Sub BMI値を算出()
  Dim mysheet As Worksheet, 身長 As Double, 体重 As Double
  Dim BMI As Double, 判定 As String, i As Integer
  Set mysheet = ThisWorkbook.Worksheets("例1")
  With mysheet
    For i = 2 To 27
      身長 = .Cells(i, 1)
      体重 = .Cells(i, 2)
      BMI = 体重 / (身長 / 100) ^ 2
          If BMI < 18.5 Then
            判定 = "低体重"
          ElseIf 18.5 <= BMI And BMI < 25 Then
            判定 = "標準"
          ElseIf 25 <= BMI And BMI < 30 Then
            判定 = "肥満1度"
          ElseIf 30 <= BMI And BMI < 35 Then
            判定 = "肥満2度"
          ElseIf 35 <= BMI And BMI < 40 Then
            判定 = "肥満3度"
          Else
            判定 = "肥満4度"
          End If
      .Cells(i, 3) = BMI
      .Cells(i, 4) = 判定
    Next i
  End With
End Sub
BMIを計算するマクロマクロ4
お疲れ様でした。 次回は、BMIの条件分岐をSelect Caseを使ったコードでマクロにしてみましょう。