使用vba代码进行评分

时间:2016-11-04 17:55:32

标签: excel vba excel-vba

我正在尝试使用vba对课程进行评分,这是我的代码和信息。

3个条件,如果等级为100或以上,则显示100+,如果等级为50或以上,则显示50+。否则,它将显示在50以下。我正在尝试在sheet2中创建一个按钮,所以当我按下它时,代码将在sheet1中运行。范围每个月都会有所不同,所以我试图循环到A列的最后一行。我还向您展示了我想要生成的结果的快照。我的问题是当我运行代码时,如果没有if,则会出现错误。需要建议或建议。

Sub Macro1()
Dim I As Integer
Dim lr As Integer
Set ws = Worksheets("Sheet1")
ws.Activate
lr = Range("A" & Rows.Count).End(xlUp).Row
For I = 2 To lr
If Cells(I, 1).Value >= 100 Then Cells(I, 2).Value = "100+"
   ElseIf Cells(I, 2).Value >= 50 Then Cells(I, 22).Value = "50+"
      Else: Cells(I, 2).Value = "Below 50"
End If
Next I
End Sub

enter image description here

谢谢,

1 个答案:

答案 0 :(得分:2)

您已将If语句写为in-inline If,因为要运行的代码与Then语句位于同一行。要使用ElseElseIf,您需要对其进行不同格式化。试试这个:

If Cells(I, 1).Value >= 100 Then
    Cells(I, 2).Value = "100+"
ElseIf Cells(I, 2).Value >= 50 Then
    Cells(I, 22).Value = "50+"
Else
    Cells(I, 2).Value = "Below 50"
End If

这将解决您的第一个错误“ else without if

就个人而言,我喜欢使用Select Case来实现这种逻辑。

Select Case Cells(I, 1).Value
    Case Is >= 100
        Cells(I, 2).Value = "100+"
    Case Is >= 50
        Cells(I, 22).Value = "50+"
    Case Else
        Cells(I, 2).Value = "Below 50"
End Select