VBA для создания нескольких списков на основе нескольких столбцов и критериев - PullRequest
0 голосов
/ 31 октября 2018

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

Выходной лист будет выглядеть примерно так: в столбце E будут перечислены все номера SAP, где столбец H на входном листе пуст. В столбце G будут перечислены все номера SAP, где столбец O равен нулю.

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

Любая помощь очень ценится!

   Private Sub CommandButton1_Click()
     ReadIncomplete
   End Sub


   Private Sub ReadIncomplete()
   Dim wb As Workbook: Set wb = ThisWorkbook
   Dim ws As Worksheet: Set ws = wb.Worksheets("Output")
   Dim iws As Worksheet: Set iws = wb.Worksheets("Input SAP")

   irow = ws.Range("E7").Row
   RowNo = iws.Range("A2").Row


  Do Until iws.Cells(RowNo, 2) = ""
     If iws.Cells(RowNo, "H") = "" Then
     ws.Cells(irow, "E") = iws.Cells(RowNo, 2)
     irow = irow + 1
  End If
  RowNo = RowNo + 1
  Loop

  Do Until iws.Cells(RowNo, 2) = ""
     If iws.Cells(RowNo, "O") = 0 Then
     ws.Cells(irow, "G") = iws.Cells(RowNo, 2)
     irow = irow + 1
  End If
  RowNo = RowNo + 1
  Loop

  End Sub

1 Ответ

0 голосов
/ 31 октября 2018

Более эффективный способ зацикливания будет:

irowE = 7
irowG = 7
RowNo = 2

Do Until iws.Cells(RowNo, 2) = ""
    If iws.Cells(RowNo, "H") = "" Then
        ws.Cells(irowE, "E") = iws.Cells(RowNo, 2)
        irowE = irowE + 1
    End if
    If iws.Cells(RowNo, "O") = 0 Then
        ws.Cells(irowG, "G") = iws.Cells(RowNo, 2)
        irowG = irowG + 1
    End If
    RowNo = RowNo + 1
Loop

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

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