背景故事:
我正在为客户开发一个销售订阅产品的网站,该产品将在本月1日和15日分批发货。她将把订单发送到她的履行机构并且不太精通技术,所以我需要为她编写一个宏,它将自动删除不属于当前货件的订单导出csv文件中的任何行,即删除订阅已过期的订单和旧的非订购订单。订单导出将始终包含所有时间的订单。
我必须使用的数据:
我想用宏创建的数据:
我认为宏如何运作:
创建批次日期 - 通过将“订单创建日期”值舍入到下一个发货日期(月份的第1个月或第15个月)来填充BATCH DATE列
创建最后的装运 - 使用SUBSCRIPTION LENGTH和BATCH DATE的总和填充LAST SHIPMENT列
DELETE EXPIRED ORDERS - 删除LAST SHIPMENT< NOW
对我来说这似乎是合乎逻辑的,并且在某些网站上探讨这一切似乎都可能在Excel中,我似乎无法获得第一部分(在下一个月或第15个月的四舍五入)工作,这真的是整个事情的基石!
非常感谢任何见解!
答案 0 :(得分:0)
你的问题涉及几个方面,但你说你的主要问题是制定整个过程日期的事情,所以一旦你理解了日期位,我就不会解决很简单的问题。
下面演示了根据订单或任何日期计算出货日期的方法。
这是一个简单的条件检查列表,根据需要添加到日期,月份或年份。如果当天是第1天或第15天,您的待遇并非完全不明确,但以下假设在1日或15日预订的订单可在同一天完成。
您应该能够调整方法来处理您的其他请求r.e.最终发货日期。
Function GetShippingDate(orderDate As Date) As Date
Dim mYear As Integer, mMonth As Integer, mDay As Integer
mYear = Year(orderDate)
mMonth = Month(orderDate)
mDay = Day(orderDate)
If mDay > 1 And mDay < 15 Then
mDay = 15
ElseIf mDay > 15 Then
mDay = 1
mMonth = mMonth + 1
End If
If mMonth > 12 Then
mMonth = mMonth - 12
mYear = mYear + 1
End If
GetShippingDate = DateSerial(mYear, mMonth, mDay)
End Function