Excel VBA-Fixing Row для сравнения - PullRequest
0 голосов
/ 04 июля 2018

Благодаря этому сайту я адаптировал код для своих собственных нужд, этот макрос позволяет мне сравнивать конкретные ячейки строки X с другими ячейками строки Y, и существует соответствие между всеми ячейками не только 1 или 2 ячейки, но и всеми ячейки этой строки дают 1 и 0 , если совпадение не найдено

  • проблема в том, что макрос сравнивает строку X с Y, что я хочу, но я не сравниваю X с Y + 1 или Y + 2, он переходит непосредственно к X + 1 и сравнивает его с Y + 1

, чтобы лучше понять мою проблему, см. Ниже:

на этом изображении две строки с желтым цветом идентичны, а в столбце AO 1 перед первой строкой и 1 перед второй строкой enter image description here

так, что сравнивать каждую строку с другими строками (X с Y, Y + 1, Y + 2) и переходить к следующей строке, и когда есть совпадение, которое подсвечивается или возвращает 1 в столбце «AO»

Код:

Sub check()
 Dim check1, check2 As Variant
 Dim l As Long
 Dim ElementsSame As Boolean
   For i = 2 To 74
     check1 = Array(Range("F" & i), Range("G" & i), Range("H" & i), Range("I" 
       & i), Range("J" & i), Range("K" & i), Range("L" & i), Range("M" & i), 
      Range("N" & i), Range("O" & i), Range("P" & i), Range("Q" & i), 
      Range("R" & i), Range("S" & i), Range("T" & i), Range("U" & i), 
      Range("V" & i), Range("W" & i), Range("X" & i), Range("Y" & i), 
      Range("Z" & i), Range("AA" & i), Range("AB" & i), Range("AC" & i), 
      Range("AD" & i), Range("AE" & i), Range("AF" & i), Range("AG" & i), 
       Range("AH" & i), Range("AI" & i), Range("AJ" & i), Range("AL" & i), 
      Range("AM" & i))
For D = 3 To 74
     check2 = Array(Range("F" & D), Range("G" & D), Range("H" & D), Range("I" 
     & D), Range("J" & D), Range("K" & D), Range("L" & D), Range("M" & D), 
     Range("N" & D), Range("O" & D), Range("P" & D), Range("Q" & D), 
     Range("R" & D), Range("S" & D), Range("T" & D), Range("U" & D), 
      Range("V" & D), Range("W" & D), Range("X" & D), Range("Y" & D), 
       Range("Z" & D), Range("AA" & D), Range("AB" & D), Range("AC" & D), 
       Range("AD" & D), Range("AE" & D), Range("AF" & D), Range("AG" & D), 
      Range("AH" & D), Range("AI" & D), Range("AJ" & D), Range("AL" & D), 
       Range("AM" & D))
 ElementsSame = True
 For l = 0 To 32 
   If check1(l) <> check2(l) Then
    ElementsSame = False

    Exit For
 End If
 Next l

If ElementsSame = False Then

  Range("AO" & i) = 1
  Range("AO" & D) = 1 
Else
   Range("AN" & D) = 0 
End If
Next D

Next i
End Sub

Любой может подсказать мне, как решить эту проблему, и если что-то не понятно по моей проблеме, пожалуйста, не стесняйтесь спрашивать

B.R Polos

1 Ответ

0 голосов
/ 04 июля 2018

Можете ли вы попробовать это (не проверено на моем конце)?

Option Explicit


Sub check()
 Dim check1, check2 As Variant
 Dim i, d As Long

For i = 2 To 74
    check1 = Array(Range("F" & i), Range("G" & i), Range("H" & i), Range("I" _
    & i), Range("J" & i), Range("K" & i), Range("L" & i), Range("M" & i), _
    Range("N" & i), Range("O" & i), Range("P" & i), Range("Q" & i), _
    Range("R" & i), Range("S" & i), Range("T" & i), Range("U" & i), _
    Range("V" & i), Range("W" & i), Range("X" & i), Range("Y" & i), _
    Range("Z" & i), Range("AA" & i), Range("AB" & i), Range("AC" & i), _
    Range("AD" & i), Range("AE" & i), Range("AF" & i), Range("AG" & i), _
    Range("AH" & i), Range("AI" & i), Range("AJ" & i), Range("AL" & i), _
    Range("AM" & i))
        For d = 3 To 74
            check2 = Array(Range("F" & d), Range("G" & d), Range("H" & d), Range("I" _
            & d), Range("J" & d), Range("K" & d), Range("L" & d), Range("M" & d), _
            Range("N" & d), Range("O" & d), Range("P" & d), Range("Q" & d), _
            Range("R" & d), Range("S" & d), Range("T" & d), Range("U" & d), _
            Range("V" & d), Range("W" & d), Range("X" & d), Range("Y" & d), _
            Range("Z" & d), Range("AA" & d), Range("AB" & d), Range("AC" & d), _
            Range("AD" & d), Range("AE" & d), Range("AF" & d), Range("AG" & d), _
            Range("AH" & d), Range("AI" & d), Range("AJ" & d), Range("AL" & d), _
            Range("AM" & d))

            If Join(check1, Chr(0)) = Join(check2, Chr(0)) Then
                Range("AO" & i) = 1
                Range("AO" & d) = 1
            Else
                Range("AN" & d) = 0
            End If
        Next d
Next i

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...