如何比较两个不同的excel工作表中的两个单元格区域?

时间:2018-11-26 10:59:00

标签: excel vba

我将我的vba代码放在这里,向您显示到目前为止在该主题上的进展。该宏旨在用于在单击命令按钮时激活。

谢谢您的建议,很遗憾,我看不到标记的重复项是否可以解决我的问题。我会尽力澄清一下。在每个工作表中,在相同的范围内,有两个相同的9 * 9宽度和高度单元格块,并且每个单元格都填充有一个从1到9的单个数字。在两个工作表中,单元格的值也相同。我希望从代码中得到的结果是比较每个单元格中两个范围的每个值,如果它们全部匹配,则在msgbox中写入成功,否则失败。我尝试在定义每个范围后编写.Value,但这也不起作用。

我总是会遇到运行时错误13:类型不匹配。我猜这种类型的问题与我的值不是同一类型有关,但是我在每个声明的范围内只有数字。我已经搜索了这个问题,但是由于我似乎无法弄清这个问题的根源,我希望您可以解决我的困境。

Sub Check()    
    If Sheets("Sudoku").Range("B2:J10") = Sheets("Solution").Range("B2:J10") Then    
        MsgBox "Success!"
    Else    
        MsgBox "Fail!"    
    End If    
End Sub

任何回答将不胜感激! 谢谢大家的回答,我们终于提出了解决方案!如果有人对此感兴趣,我将其放在下面。它是Odatas版本的略微修改版本。

Sub Check()
Dim i As Integer
Dim j As Integer

For i = 2 To Sheets("Sudoku").Cells(Sheets("Sudoku").Rows.Count, "B").End(xlUp).Row
    For j = 2 To Sheets("Sudoku").Cells(2, Sheets("Sudoku").Columns.Count).End(xlToLeft).Column
        If Sheets("Sudoku").Cells(j, i).Value = Sheets("Megoldás").Cells(j, i).Value Then
        Else
            MsgBox ("Fail!")
            Exit Sub
        End If
    Next
Next
MsgBox ("Success!")

End Sub

1 个答案:

答案 0 :(得分:0)

您需要遍历所有值。

    Sub Check()
    Dim i As Integer
    Dim j As Integer


    For i = 1 To Sheets("Sudoku").Cells(.Rows.Count, "A").End(xlUp).Row
        for j= 1 to Sheets("Sudoku")..Cells(1, .Columns.Count).End(xlToLeft).Column
            If Sheets("Sudoku").Cells(j, i).value = Sheets("Solution").Cells(j, i).value Then

            Else If
                MsgBox("Fail")
                Exit Sub
            End If

        Next
    Next

    MsgBox("Success")
  End Sub