Public Function XepLoai(DiemCacMon As Range, DiemTB, Toan, Van As Double, MonXL As Range) As String
With Application.WorksheetFunction
If .Min(DiemTB, .Max(Toan, Van)) >= 8 And .Min(DiemCacMon, MonXL) >= 6.5 Then
XepLoai = "G"
ElseIf (.Min(DiemTB, .Max(Toan, Van)) >= 8 And .Min(DiemCacMon) >= 3.5 And .Min(MonXL) >= 6.5 And .CountIf(DiemCacMon, "<6,5") = 1) _
Or (.Min(DiemTB, .Max(Toan, Van)) >= 6.5 And .Min(DiemCacMon, MonXL) >= 5) Then
XepLoai = "K"
ElseIf (.Min(DiemTB, .Max(Toan, Van)) >= 8 And ((.Min(DiemCacMon) >= 6.5 And .CountIf(MonXL, "<5") = 1) _
Or (.Min(DiemCacMon) < 3.5 And .Min(MonXL) >= 6.5 And .CountIf(DiemCacMon, "<6,5") = 1))) _
Or (.Min(DiemTB, .Max(Toan, Van)) >= 6.5 And ((.Min(DiemCacMon) >= 5 And .Min(MonXL) = 3.5 And .CountIf(MonXL, "<5") = 1) _
Or (.Min(DiemCacMon) >= 2 And .Min(MonXL) >= 5 And .CountIf(DiemCacMon, "<5") = 1))) _
Or (.Min(DiemTB, MonXL, .Max(Toan, Van)) >= 5 And .Min(DiemCacMon) >= 3.5) Then
XepLoai = "TB"
ElseIf .Min(DiemTB, .Max(Toan, Van)) >= 6.5 And ((.Min(DiemCacMon) >= 5 And .Min(MonXL) = 2 And .CountIf(MonXL, "<5") = 1) _
Or (.Min(DiemCacMon) < 2 And .Min(MonXL) >= 5 And .CountIf(DiemCacMon, "<5") = 1)) _
Or (.Min(DiemTB, MonXL) >= 3.5 And .Min(DiemCacMon) >= 2) Then
XepLoai = "Y"
Else
XepLoai = "Kém"
End If
End With
End Function