首页 > 解决方案 > 如何比较两个不同excel工作表中的两个单元格范围?

问题描述

我已将我的 vba 代码放在这里,以向您展示我迄今为止在该主题上的进展。这是一个在命令按钮单击时激活的宏。

感谢您的建议,不幸的是,我看不到标记的重复项是否可以解决我的问题。我会尽力澄清它。在每个 Worksheets 中,在同一范围内,有两个相同的 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

标签: excelvba

解决方案


您需要遍历所有值。

    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

推荐阅读