Сравнение двух диапазонов и копирование - PullRequest
0 голосов
/ 01 октября 2019

Я пытаюсь сравнить два диапазона и скопировать данные на основе условий IF и AND, но условие AND не работает, так как данные результата копируются только на основе условий IF. Пожалуйста, предложите, какие изменения я должен внести в код. Ниже приведен код, который я сейчас использую:

Sub Copy3()

    Dim mCell As Range
    Dim yRange As Range
    Dim mRange As Range
    Dim RRange As Range

    Set mRange = Worksheets("Sheet2").Range("DB2:DB17")
     Set yRange = Worksheets("Sheet2").Range("CZ2:CZ17")
     Set RRange = Worksheets("Sheet2").Range("CY2:CY17")
    Set target = mRange.Offset(columnoffset:=-3)

    Dim P As Long, Q As Long, t As Long
    For P = 1 To mRange.Cells.Count
    For Q = 1 To RRange.Cells.Count
    For t = 1 To yRange.Cells.Count

        If mRange.Cells(P).Value <> "" And RRange.Cells(Q).Value <> yRange.Cells(t).Value Then
           mRange.Cells(P).Copy target.Cells(P)
        End If

    Next
    Next
    Next

End Sub

1 Ответ

0 голосов
/ 01 октября 2019

Вы можете попробовать это (имя листа и диапазоны должны быть изменены, чтобы отразить структуру ваших данных). Я сделал предположение, что цель указывает на столбец А. Адрес ячеек отслеживается, чтобы было легче проверить, действительно ли это то, что вы ожидаете от кода.

Dim wholeRange As Range
Set wholeRange = Worksheets("Feuil1").Range("A2:D17")

If (Not wholeRange Is Nothing) Then
    Dim row As Range, rP As Range, rQ As Range, rR As Range, rT As Range
    For Each row In wholeRange.Rows
        Set rP = row.Offset(0, 1).Resize(1, 1)
        Set rR = row.Offset(0, 2).Resize(1, 1)
        Set rQ = row.Offset(0, 3).Resize(1, 1)
        Set rT = row.Offset(0, 0).Resize(1, 1)
        Debug.Print "P:" + rP.Address + " R:" + rR.Address + " Q:" + rQ.Address + " T:" + rT.Address
        If (rP.Cells(1, 1).Value <> "") And (rQ.Cells(1, 1).Value <> rT.Cells(1, 1).Value) Then
           rP.Cells(1, 1).Value = rT.Cells(1, 1).Value
        End If
    Next row
Else
    Debug.Print "wholeRange range is not defined"
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...