Страницы: 1
RSS
Сравнение пар
 
Всем привет!
сразу прошу прощения что с такой задачей, уже 4 дня с ней калупаюсь , даже ChatGPT подключал для работы, но тупо не хватает знаний, а помочь хорошему человеку надо, тем более это для школьников ему надо.

задача следующая (постараюсь объяснить максимально на пальцах с приложенным примером)

нужен макрос который будет брать первую пару чисел B1 и C1 (такую пару для удобства будем называть - "мастер") и теперь ее надо сравнить со следующими двумя ячейками D1 и E1 (такую пару будем называть "слейф" )

если в "слейф" есть хоть одна похожая цифра из "мастер" то в сравниваемых ячейках "слейф" такая цифра/цифры должна закрашиваться, далее макрос берет следующую пару ячеек F1 и G1 (такую пару будем называть "слейф1" и так же ее сравнивает с "мастер" и если хоть одна цифра совпадает, то он в "слейф1" закрашивает эту цифру/цифры и так сравнивает и закрашивает пока не возьмет следующую пару "слейф*" в которой хотя бы одна из цифр будет  отличаться от "мастер" в этом случае, макрос должен не закрашивать эту отличающуюся цифру и дальше уже работа скрипта должна начаться от этой пары (теперь уже "мастер") и так же дальше идти и сравнивать себя со следующими парами и т.д.


тут в документе так:
В и С (3 и 1) это у нас мастер
D и F (3 и 3) это у нас слейф и цифра 3 совпадает с одной из цифр в мастере и она закрашивается
F и G (2 b 3) это у нас слейф1 и цифры 2 нет в Мастере и она не закрашивается у нас, а три закраивается, теперь у нас  F и G  становится Мастером

и далее теперь сравнение след пар идет от этих пар ( F и G )
и т.д.

подскажите как такое можно решить или сможете помочь? (
 
код, только у вас ошибка в самом примере с закрашиванием, проверьте правильность закрашивания у вас, код вроде правильно работает, гляньте
Код
Sub Colors()
    Dim ws As Worksheet
    Dim master As Range, slave As Range
    Dim i As Long, lastCol As Long
    
    Set ws = ActiveSheet
    Set master = ws.Range("B1:C1")
    lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
    
    For i = 4 To lastCol Step 2
        Set slave = ws.Cells(1, i).Resize(1, 2)
        
        If slave.Cells(1, 1).Value = master.Cells(1, 1).Value Then
            slave.Cells(1, 1).Interior.Color = RGB(255, 255, 0)
        ElseIf slave.Cells(1, 1).Value = master.Cells(1, 2).Value Then
            slave.Cells(1, 1).Interior.Color = RGB(255, 255, 0)
        End If
        
        If slave.Cells(1, 2).Value = master.Cells(1, 1).Value Then
            slave.Cells(1, 2).Interior.Color = RGB(255, 255, 0)
        ElseIf slave.Cells(1, 2).Value = master.Cells(1, 2).Value Then
            slave.Cells(1, 2).Interior.Color = RGB(255, 255, 0)
        End If
        
        If slave.Cells(1, 1).Value <> master.Cells(1, 1).Value And _
           slave.Cells(1, 1).Value <> master.Cells(1, 2).Value Or _
           slave.Cells(1, 2).Value <> master.Cells(1, 1).Value And _
           slave.Cells(1, 2).Value <> master.Cells(1, 2).Value Then
            Set master = slave
        End If
    Next i
End Sub

 
спасибо Вам большое!!!!!
все работает!!!
Страницы: 1
Наверх