Добрый день. Не могу решить проблему из-за ограничений цикла For Next.
Есть 2 листа, пытаюсь сравнить значения  циклом For Next.
Проблема:
- при совпадении условий оператор закрашивает ячейку и выходит из цикла i  из-за наличия Exit For и переходит к следующей проверке. Однако так как много повторяющихся значений, то в следующий цикл он опять закрашивает тоже самое значение, которое уже закрасил и опять выходит. Итог - вместо 10 одинаковых строк закрашена всего 1.
- убираем цикл  Exit For. В итоге закрашенных значений получаем больше чем должно быть. Оператор находит совпадения и тупо все их красит. Итог - вместо 7 закрашенных и 7 не закрашенных ячеек, получаем все 14 закрашенных.
Прошу подсказать решение. Файл прикрепить не смогу из-за наложенных безопасниками ограничений
| Код | 
|---|
Sub Cycle_with_Massive_zalivka_bez_cycles()    Dim Naimenovanie As Variant
    Dim Zalivka As Variant
    Dim MyArray1() As Variant
    Dim MyArray2() As Variant
    Dim j%, i%
    Set Analiz = Sheets(Лист4.Name)
    Set TDSheet = Sheets(Лист3.Name)
    Application.ScreenUpdating = False
   
            With TDSheet
                MyArray1 = .Range(.Cells(1, 2), .Cells(7948, 2)).Value
            End With
 
           With TDSheet
                MyArray2 = .Range(.Cells(1, 12), .Cells(7948, 12)).Value
            End With
 '        Cycle J
            For j = 1 To 7895
                Naimenovanie = Analiz.Cells(j, 2)
                Summa = Analiz.Cells(j, 13)
                Zalivka = Analiz.Cells(j, 2).Interior.Color
                Data = Analiz.Cells(j, 16)
                Nomer_Akta = Analiz.Cells(j, 17)
                Otpravka_s_reestrom = Analiz.Cells(j, 18)
                Na_soglasovanii = Analiz.Cells(j, 19)
               Ispolnitel = Analiz.Cells(j, 20)
                V_Rabote = Analiz.Cells(j, 21)
                Vozvrat = Analiz.Cells(j, 22)
                Primech = Analiz.Cells(j, 23)
'        Cycle i
                    For i = 1 To 7948
                        If MyArray1(i, 1) = Naimenovanie And MyArray2(i, 1) = Summa Then
                            TDSheet.Cells(i, 2).Interior.Color = Zalivka
                            TDSheet.Cells(i, 15) = Data
                            TDSheet.Cells(i, 16) = Nomer_Akta
                            TDSheet.Cells(i, 17) = Otpravka_s_reestrom
                            TDSheet.Cells(i, 18) = Na_soglasovanii
                            TDSheet.Cells(i, 19) = Ispolnitel
                            TDSheet.Cells(i, 20) = V_Rabote
                            TDSheet.Cells(i, 21) = Vozvrat
                            TDSheet.Cells(i, 22) = Primech
                        Exit For
                        End If
                    Next i
           Next j
        Application.ScreenUpdating = True
End Sub  |