Копирование данных в правильную строку - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь прочитать список информации с другого листа в Excel, если даты выполнения соответствуют, тогда все данные для этого человека затем вставляются в строку на новом листе.

однако, я бы попытался пройтись по всем людям в списке, но сказать, что человек был четвертым в исходном списке, тогда информация для этого человека будет вставлена ​​правильно, но на 4 места ниже, чем сверху (показан пример на картине).

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

enter image description here

Sub DepotsDue()
Dim i As Long


Worksheets("Depots Due Weekly").Range("A5:F150").ClearContents

For i = 1 To 150


 If Worksheets("Depots Due Weekly").Cells(1, "B").Value = Worksheets("Weekly").Cells(1 + i, "E").Value Then
 Worksheets("Depots Due Weekly").Cells(4 + i, "A").Value = Worksheets("Weekly").Cells(1 + i, "A").Value
 Worksheets("Depots Due Weekly").Cells(4 + i, "B").Value = Worksheets("Weekly").Cells(1 + i, "B").Value
 Worksheets("Depots Due Weekly").Cells(4 + i, "C").Value = Worksheets("Weekly").Cells(1 + i, "C").Value
 Worksheets("Depots Due Weekly").Cells(4 + i, "D").Value = Worksheets("Weekly").Cells(1 + i, "D").Value
 End If

Next i

End Sub

1 Ответ

1 голос
/ 17 апреля 2020

Вы должны использовать два счетчика. Один для оригинального стола, один для нового стола. Теперь вы шагаете по исходной таблице и всякий раз, когда вставляете строку во вторую таблицу, увеличиваете второй счетчик:

Sub DepotsDue()
Dim i As Long
Dim newCounter as long

Worksheets("Depots Due Weekly").Range("A5:F150").ClearContents

For i = 1 To 150

  If Worksheets("Depots Due Weekly").Cells(1, "B").Value = Worksheets("Weekly").Cells(1 + i, "E").Value Then
    Worksheets("Depots Due Weekly").Cells(4 + newCounter , "A").Value = Worksheets("Weekly").Cells(1 + i, "A").Value
    Worksheets("Depots Due Weekly").Cells(4 + newCounter , "B").Value = Worksheets("Weekly").Cells(1 + i, "B").Value
    Worksheets("Depots Due Weekly").Cells(4 + newCounter , "C").Value = Worksheets("Weekly").Cells(1 + i, "C").Value
    Worksheets("Depots Due Weekly").Cells(4 + newCounter , "D").Value = Worksheets("Weekly").Cells(1 + i, "D").Value
    newCounter =newCounter + 1
  End If

Next i

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