как пропустить пропущенные даты при просмотре списка дат с помощью до - PullRequest
1 голос
/ 01 апреля 2019

У меня есть план производства, в котором перечислены производимые модели (столбец A), количество производства (столбец B) и даты производства (столбец C).На основании этих данных я рассчитываю даты ETA (столбец D) для полуразрушенных единиц (столбец E), которые будут превращены в готовые модели.Каждый день производится разное количество разных моделей, но если исходная дата производства одинакова, дата ETA (и, в конечном итоге, номер заказа на поставку) для всех полу-нокдаунов, необходимых в этот конкретный день, также будет одинаковой.

В качестве следующего шага я хочу автоматически прикрепить текущий номер заказа на покупку (счетчик в ячейке J1) к каждому заказу для полуразрушенных единиц - та же дата производства, тот же номер заказа.После изменения даты производства счетчик номера заказа на поставку обновляется +1.

При выполнении мой код сначала проверяет первую свежую строку в столбце G, а затем спрашивает, сколько PO создать.Все работает, за исключением того факта, что даты выходных / праздничных / и т. Д., Которые не указаны в производственном плане, также обновляют текущее ПО.Кроме того, для каждой пропущенной даты производства один из циклов ПО излишне «теряется».

Похоже, проблема в том, что PO и активная дата обновляются в конце моего цикла, независимо от даты, которая фактически указана в списке.

Я попытался исправить это, добавив второе условиек условию IF, после добавления отсутствующих дат и квалификатора («без прод.») в исходный производственный план, но код будет работать только до первого дня без прод.Я также предпочел бы не добавлять пропущенные даты в производственный план, поскольку это добавляет еще один предварительный шаг к процессу.

Другое решение может состоять в том, чтобы добавлять рабочие дни только к начальной дате, когда циклы изначально установлены.Это позволило бы убедиться, что в несуществующие даты циклы не будут потеряны, но я думаю, что счетчик PO будет обновляться и для пропущенных дат.

Sub create_PO_021()
'adds the running PO number
'running count of purchase orders
Dim PO As Integer
PO = Range("J1").Value

'counts total used lines based on SKU#
Dim lastRow As Long
lastRow = Range("A" & Rows.Count).End(xlUp).Row

'searches for first open cell in PO column
Dim rw As Integer
rw = Range("G" & Rows.Count).End(xlUp).Row + 1

'define first production date for which to create a PO
Dim firstDate As Date
'firstDate = Application.InputBox("On what production date do you want to start:", "Enter date")
firstDate = Cells(rw, 3).Value
MsgBox "Starting at production date" & " " & (firstDate)

'define how many POs you want to create
'count from start date to first gap (week-end or similar)
Dim POcycles As Integer
POcycles = Application.InputBox("How many orders do you want to do?", "Enter number")

'calculate last production date for which to create a PO
Dim lastDate As Date
lastDate = firstDate + POcycles

Dim activeDate As Date
activeDate = firstDate

Do Until activeDate = lastDate
        For a = 1 To lastRow
            If Cells(rw, 3).Value = activeDate Then
                Cells(rw, 7).Value = PO + 1
                Cells(1, 10).Value = PO + 1
                rw = rw + 1
            End If
        Next a
   PO = PO + 1
   activeDate = activeDate + 1
Loop

End Sub

Текущий результат для начального PO = 100 и 5Для создания заказа на поставку: неверный результат

Желаемый результат с теми же параметрами: желаемый результат

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