列值中的检查单元格与特定单元格值匹配

时间:2018-03-23 15:15:13

标签: excel vba excel-vba matching

好的,所以我对VBA和任何类型的编码都是全新的。如果这是一个简单的解决方案,请原谅我。

我正在根据班级成绩创建电子表格。我需要做的是查看学生选择的答案(a,b,c,d,e)是否与答案键(在其自己的行中)相匹配。但是,范围的数量是可变的并且取决于用户输入(即,每个分配的学生数量和答案数量不同)。 Attached image of example spreadsheet

我的最终目标是将正确的答案转换为读取为1而不正确的读取为0,并在最后一列中输入总数。到目前为止,我只能得到一个奇异的单元格来完成这个并且还没有完全弄清楚其余部分(我尝试过的任何变量范围都会返回错误)。

任何建议都会受到高度赞赏!

1 个答案:

答案 0 :(得分:0)

使用数组进行处理尝试此子程序。

Option Explicit

Sub answerNumbers()
    Dim vals As Variant, ans As Variant, i As Long, j As Long

    With Worksheets("sheet5")
        ans = .Cells(8, "D").Resize(1, 5).Value2
        vals = .Range(.Cells(10, "D"), .Cells(.Rows.Count, "A").End(xlUp).Offset(0, 7))

        For i = LBound(vals, 1) To UBound(vals, 1)
            For j = LBound(vals, 2) To UBound(vals, 2)
                vals(i, j) = Abs(CBool(vals(i, j) = ans(1, j)))
            Next j
        Next i

        .Cells(10, "D").Resize(UBound(vals, 1), UBound(vals, 2)) = vals
    End With
End Sub