Скопировать диапазон ячеек и вставить в другой лист на основе даты? - PullRequest
0 голосов
/ 26 апреля 2019

Я искал сети для любого решения и продолжаю появляться пустым, так что, надеюсь, кто-нибудь может мне помочь.У меня есть два листа, Sheet1 и Inventory. В Sheet 1, пользователь вводит дату в B1.В диапазоне C4:C200 у меня есть список расходных материалов, а в диапазоне D4:D200 пользователь вводит номер каждого из имеющихся на складе.В Inventory список расходных материалов находится в диапазоне A1:A200, а b1:z1 в списке дат.

Я пытаюсь создать макрос, который будет искать в Sheet1 дату, введенную в B1, скажем, 4/1/19, скопируйте D4:D200, затем посмотрите в Инвентаризации, найдите 4/1/19 в строках b1: z1 и вставьте скопированные данные под правильной датой.Поэтому, если 4/1/19 находится в ячейке E1, значения будут вставлены в E2.

Хотя я неплохо разбираюсь в формулах и функциях ячеек, я новичок в макросах, поэтому я не уверен, что делать .. Любая помощь очень ценится!

1 Ответ

0 голосов
/ 26 апреля 2019

Я попытался написать очень простой код, чтобы вы могли легко его прочитать.Это не самый сложный код, но он сделает свою работу.Я заметил только несколько вещей: количество материалов в списке составляет 197 штук, на листе «Инвентаризация» перечислены 200 предметов ... ну, вы можете легко настроить макрос ниже.Скопируйте код в новый модуль и запустите его.Если у вас возникнут какие-либо проблемы, пожалуйста, опубликуйте полную книгу, и я посмотрю.Убедитесь, что ячейка a1 в инвентаре не пуста.

Sub DoYourThing()
Dim c As Integer

  c = findHorizontal("Inventory", 1, Sheets("Sheet1").Cells(1, 2).Value)
  'now we know what column the date is in
  For i = 2 To 200
    Sheets("Inventory").Cells(i, c) = Sheets("Sheet1").Cells(i + 2, 5)
  Next i
End Sub

Function findHorizontal(Sheet As String, row As Integer, Value As Variant) As Integer
'searches a row from left to right until the cells are empty
Dim i As Integer

  i = 1

  Do While Not IsEmpty(Sheets(Sheet).Cells(row, i))
    If Sheets(Sheet).Cells(row, i) = Value Then
      findHorizontal = i
      Exit Function
    End If
    i = i + 1
  Loop

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