Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 使用do-until循环浏览日期列表时如何跳过缺少的日期_Excel_Vba_Date - Fatal编程技术网

Excel 使用do-until循环浏览日期列表时如何跳过缺少的日期

Excel 使用do-until循环浏览日期列表时如何跳过缺少的日期,excel,vba,date,Excel,Vba,Date,我有一个生产计划,其中列出了要生产的型号(a列)、生产数量(B列)和生产日期(C列)。基于这些,我计算了半拆卸装置(E列)的预计到达日期(D列),这些装置将转变为成品模型。每天生产不同数量的不同型号,但只要原始生产日期相同,该特定日期所需的所有半成品的ETA日期(以及最终的PO编号)也将相同 作为下一步,我想自动将一个正在运行的PO编号(单元格J1中的计数器)附加到半拆卸装置的每个订单上-相同的生产日期,相同的PO编号。一旦生产日期更改,订单编号计数器将更新+1 在执行时,我的代码首先检查G列中

我有一个生产计划,其中列出了要生产的型号(a列)、生产数量(B列)和生产日期(C列)。基于这些,我计算了半拆卸装置(E列)的预计到达日期(D列),这些装置将转变为成品模型。每天生产不同数量的不同型号,但只要原始生产日期相同,该特定日期所需的所有半成品的ETA日期(以及最终的PO编号)也将相同

作为下一步,我想自动将一个正在运行的PO编号(单元格J1中的计数器)附加到半拆卸装置的每个订单上-相同的生产日期,相同的PO编号。一旦生产日期更改,订单编号计数器将更新+1

在执行时,我的代码首先检查G列中的第一个新行,然后询问要创建多少个POs。除了周末/假日等日期(未列在生产计划中)也会更新正在运行的采购订单之外,一切正常。此外,对于每个缺失的生产日期,一个采购订单周期不必要地“丢失”

问题似乎在于,无论实际列出的日期是什么,PO和活动日期都会在循环结束时更新

我试图通过在原始生产计划中添加缺少的日期和限定符(“no prod”)之后,在IF子句中添加第二个条件来解决这个问题,但是代码只能运行到第一个no prod-day。我也不希望在生产计划中添加缺失的日期,因为它为流程添加了另一个初步步骤

另一种解决方案可能是,在初始设置周期时,仅向初始日期添加工作日。这将确保没有周期在不存在的日期丢失,但我认为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
初始采购订单=100的当前结果,以及创建的5个采购订单:

具有相同参数的预期结果: