Как я могу пройти по отфильтрованной таблице и проверить, есть ли каждая строка на другом листе, используя vba? - PullRequest
0 голосов
/ 23 февраля 2019

У меня есть 2 рабочих листа.Давайте назовем их рабочим листом A и рабочим листом B. В рабочем листе AI автоматически извлекает огромное количество данных и применяет надлежащие фильтры для сужения критических данных (см. Изображение)

, в следующей части мне нужна помощь:

  1. перебирает только видимые строки на листе A
  2. , проверяет, соответствует ли первый столбец какой-либо строке в первом столбце листа b
  3. , если он совпадаетзатем мне нужно проверить, что второй столбец в той же строке на листе A также совпадает со вторым столбцом в соответствующей строке на листе B.
  4. , если он проходит оба этих теста, мне нужно скопировать всю строку идобавьте его в конец данных в строке B.

enter image description here пока у меня есть:

    with ThisWorkbook.Sheets(sheet_name) 
    Dim open_package As Range
    Set open_package = ThisWorkbook.Sheets("Open Packages").Range("A2", Range("A" & Rows.Count).End(xlUp))
    Dim rng3 As Range



    Dim rng_package As Range
    Set rng_package = Range("A1", Range("A" & Rows.Count).End(xlUp)).SpecialCells(xlCellTypeVisible)
    Dim cl_package As Range


    For Each cl_package In rng_package.Rows
        For Each rng3 In open_package
            MsgBox rng3
            Debug.Print (cl_package.Cells(1) & " " & cl_package.Cells(2))
        Next rng3
    Next cl_package
End With

Я пытаюсь устранить неполадкивложенный цикл, чтобы увидеть, как именно он проходит через все.

1 Ответ

0 голосов
/ 23 февраля 2019

Иван!

Я создал код для зацикливания только видимых строк из первой таблицы и поиска их во второй таблице. Когда вы находите совпадение между транзакцией и пакетом, вы добавляете строку во вторую таблицу

Sub LoopALL()

  Dim i As Long
  Sheets("A").Select
  Range("A1048576").End(xlUp).Select 'selects the last visible row
  LVR = ActiveCell.Row + 1

  While Cells(LVR, 1).EntireRow.Hidden = True
      LVR = LVR + 1
  Wend

  'End of Table, first row blank
  EoT = LVR

  For i = 2 To EoT
  Sheets("A").Select


      If Cells(i, 1).EntireRow.Hidden = False Then
        TRS = Cells(i, 1)
        PCK = Cells(i, 2)
        STS = Cells(i, 3)
        DES = Cells(i, 4)


        Sheets("B").Select
        Z = Range("A1048576").End(xlUp).Row

        For x = 2 To Z
          If Cells(x, 1).Value = TRS And Cells(x, 2).Value = PCK Then
             Cells(Z + 1, 1).Value = TRS
             Cells(Z + 1, 2).Value = PCK
             Cells(Z + 1, 3).Value = STS
             Cells(Z + 1, 4).Value = DES
          End If
        Next


      End If

  Next


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