ExcelVBAでVBAでIFを使わずに判定してみた
この動画のマクロはWindows11/Office2013で作成してます。
B2セルが50以上なら合格、それ未満なら不合格を出す
'IF関数を使う
=IF(B2>=50,"合格","不合格")
'CHOOSE関数を使う
=CHOOSE((B2>=50)+1,"不合格","合格")
2教科にして70以上でそれぞれ文言を変える
'IF関数を使う
=IF(AND(B2>=70,C2>=70),"両方合格",IF(AND(B2>=70,C2<70),"試験B再受験",IF(AND(B2<70,C2>=70),"試験A再受験","両方再受験")))
'CHOOSE関数を使う
=CHOOSE(($B2>=70)*2+($C2>=70)+1,"両方再受験","試験A再試験","試験B再試験","両方合格")
Sub Macro1()
'
' VBA100本ノック 8本目:点数の合否判定
' https://excel-ubara.com/vba100/VBA100_008.html
合否テキスト = Array("", "合格")
For y = 2 To 12
x_and = 0
x_or = 0
For x = 2 To 6
x_and = x_and + (Cells(y, x) >= 50) '()の中身は真なら-1,偽なら0
x_or = x_or + Cells(y, x)
Next
'x_andが-5なら5教科すべてが50点以上
Debug.Print "x_and=-5 : " & (x_and = -5) * 1 & vbTab & "* 合計点>=350 : " & (x_or >= 350) * 1 & vbTab & " = " & (x_and = -5) * (x_or >= 350)
Cells(y, 7).Value = 合否テキスト((x_and = -5) * (x_or >= 350))
Next
End Sub
0件のコメント