BMIをSelect Caseで計算
マクロ講座82回BMIの6通りの条件分岐を、Select Caseステートメントを使っても作成する
BMIをSelect Caseで計算 Excel2013 マクロ講座 82回
BMIを算出する Select Caseで
前回は、BMIの6通りの条件分岐をIf~Then~ElseIfを使って処理しました。
このような多岐選択処理は、Select Caseステートメントを使っても作成することができます。
Select Caseを直訳すると、"場合を選ぶ"です。If~Thenは、"もし~だったら"、どちらも覚えやすいですね。
(サンプルファイルは、こちらから マクロ82回サンプルデータ)
Select Case文の書式
Select Case文の書式は以下の用になります。If~Thenと比べると若干見やすく感じますね。
前回と同様の表です。すでに身長と体重を計測した表とBMIの判定基準が表示された表をもとにBMIと判定を入力していきます。
BMIによる判定は6通りありますから、Select Caseを使ったコードは以下のようになります。BMI、判定は変数として宣言しています。
BMI = 体重 / (身長 / 100) ^ 2 Select Case BMI Case Is < 18.5 判定 = "低体重" Case Is < 25 判定 = "標準" Case Is < 30 判定 = "肥満1度" Case Is < 35 判定 = "肥満2度" Case Is < 35 判定 = "肥満3度" Case Else 判定 = "肥満4度" End Select
繰り返し処理をするFor~Nextステートメント
上記のコードをFor~Nextで挟んで、1行ごとに判定していくようなコードを書いてやります。
身長と体重が記入された表でBMIを算出し肥満度を判定するコードは以下のようになります。
身長と体重が記入された表でBMIを算出し肥満度を判定するコードは以下のようになります。
Sub BMI値をSelectCaseで() Dim mysheet As Worksheet, 身長 As Single, 体重 As Double Dim BMI As Double, 判定 As String, i As Integer Set mysheet = ThisWorkbook.Worksheets("例3") With mysheet For i = 2 To 27 身長 = .Cells(i, 1) 体重 = .Cells(i, 2) BMI = 体重 / (身長 / 100) ^ 2 '上記で解説済みのコードを省略しています。 'ここに上記のSelect Caseを使ったコードが入ります。 .Cells(i, 3) = BMI .Cells(i, 4) = 判定 Next i End With End Sub
作成したマクロコードを実行すると、BMIが計算され、判定が表示されます。
判定別に背景の色を変える
Select Caseを使った処理のコードは見やすいので、BMI値による判定に見やすくなるように背景色を設定してみました。
コードは次のようになります。
Sub BMI値で背景を変更() Dim mysheet As Worksheet, 身長 As Single, 体重 As Double Dim BMI As Double, 判定 As String, i As Integer, mycol As Integer Set mysheet = ThisWorkbook.Worksheets("例2") With mysheet For i = 2 To 27 身長 = .Cells(i, 1) 体重 = .Cells(i, 2) BMI = 体重 / (身長 / 100) ^ 2 Select Case BMI Case Is < 18.5 判定 = "低体重" mycol = 0 Case Is < 25 判定 = "標準" mycol = 0 Case Is < 30 判定 = "肥満1度" mycol = 36 Case Is < 35 判定 = "肥満2度" Case Is < 40 判定 = "肥満3度" mycol = 38 Case Else 判定 = "肥満4度" mycol = 3 End Select .Cells(i, 3) = BMI .Cells(i, 4) = 判定 .Cells(i, 4).Interior.ColorIndex = mycol Next i End With End Sub
お疲れ様でした。