Как сравнить два диапазона ячеек в двух разных рабочих листах Excel? - PullRequest
0 голосов
/ 26 ноября 2018

Я поместил свой код VBA здесь, чтобы показать вам мой прогресс в этом вопросе.Предполагается, что это макрос, который активируется при нажатии кнопки команды.

Спасибо за ваши предложения, к сожалению, я не вижу, решит ли эта помеченная дубликат мою проблему.Я постараюсь уточнить это как можно лучше.В каждом рабочем листе в одном и том же диапазоне находятся два одинаковых блока ячеек шириной и высотой 9 * 9, и каждая ячейка заполняется одним числом от 1 до 9 значений.Значения ячеек также идентичны в обеих таблицах.То, что я ожидал бы от своего кода, это сравнить каждое из двух значений каждого диапазона в каждой ячейке, и, если все они совпадают, напишите в msgbox success, иначе произойдет сбой.Я попытался написать .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

Любой ответ мог быс благодарностью!Спасибо всем за ответы, мы наконец-то нашли решение!Я поставлю это ниже, если кто-то заинтересован в этом.Это слегка измененная версия версии Одатаса.

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 голосов
/ 26 ноября 2018

Вам нужно перебрать все значения.

    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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...