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

Vba 检查列值中的单元格是否与特定单元格值匹配,vba,excel,matching,Vba,Excel,Matching,好的,所以我对VBA和任何类型的编码都是全新的。如果这是一个简单的解决方案,请原谅我 我正在创建一个基于班级成绩的电子表格。我需要做的是看看学生a、b、c、d、e选择的答案是否与自己所在行的答案匹配。但是,范围的数量是可变的,取决于用户输入,即学生数量和答案数量因每个作业而异 我的最终目标是将正确答案转换为1,将不正确答案转换为0,最后一列是总数。到目前为止,我只能得到一个单一的单元格来完成这项工作,但还没有完全弄清楚其余的事情。我尝试过的任何类型的变量范围都会返回一个错误 任何建议都将不胜感激

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

我正在创建一个基于班级成绩的电子表格。我需要做的是看看学生a、b、c、d、e选择的答案是否与自己所在行的答案匹配。但是,范围的数量是可变的,取决于用户输入,即学生数量和答案数量因每个作业而异

我的最终目标是将正确答案转换为1,将不正确答案转换为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

请查阅有关循环、lastrow、lastcolumn等的教程。哦,我的天哪,你是一个绝对的圣人!!非常感谢你!这很好。最后一个问题,我保证。如果数据集在列方面是可变的,那么在本例中,问题的数量是可变的,那么我如何使其在动态范围内工作?现在它最多可以处理5个问题,我可以根据需要修改它以处理任意多的问题,我只需要为每个数据集手动调整它。让它成为动态的,或多或少的自我调节会容易得多。我相信这很简单,但我对这个还是很陌生。任何建议都非常感谢