我希望能够使用数据输入页面或表单来跟踪每月的订单执行情况。我们有一定数量的 SKU,比如说 10 个,每个 SKU 的订单数量各不相同。生产部门每天完成的 SKU 数量不统一,并且可以在任何一天的任何时间(24/7)发布生产信息,发布次数可不止一次。
如果 SKU 列在 A 列中,总订单列在 B 列中,而我(或生产操作员)在 C 列中发布了当前产量,那么我希望 D 列返回剩余的订单量(因此所有之前输入的该 SKU 的生产都会被保存(带有日期和时间)在不同的表格上并被连续相加。)
SKU 总订单 当前生产 剩余生产 A 15,000 100 15,000 -(100+ 之前生产的 A) B 2,000 0 2,000 - (之前生产的 B) C 7,500 3,000 7,500 - (3,000 + 之前生产的 C)
感谢您的帮助。数据输入表(或表格)非常重要,因为我们拥有的 SKU 数量(超过 10 个)以及输入数据的人员数量和 Excel 熟练程度。
答案1
您正在寻找的内容非常适合 VBA 解决方案。在我的测试工作簿中,我按照您的建议设置了两个工作表。
第一个是汇总工作表,它将用作数据输入表。一个或多个 SKU 的当前生产量将输入到 C 列的突出显示区域中,如下面的屏幕截图所示。(我假设其他手动输入的项目只有每个 SKU 的每月订单总数。)
生产数量将以编程方式发布到详细工作表,并依次在第一个工作表的汇总表中汇总为“上次生产”。
汇总工作表上的命令按钮将触发明细过账。按下此按钮时,汇总工作表当前生产列中的每个金额将连同受影响的 SKU 以及当前日期和时间一起复制到明细表中。复制后,汇总表的当前生产列将被清除。
通过在功能区的“开发人员”选项卡中插入按钮表单到摘要表中,可以创建命令按钮。然后,通过选择“设计模式”,右键单击按钮并选择“查看代码”,并将代码粘贴到出现的编辑面板中,将代码链接到按钮。
由于这个过程有点复杂,我已将我的测试工作簿通过以下方式提供:此 Dropbox 链接。
摘要工作表
详细工作表
命令按钮代码
Option Explicit
Private Sub CommandButton1_Click()
Dim skuArr As Variant
Dim prodArr As Variant
Dim postRow As Long
Dim currDate As Long
Dim currTime As Double
Dim i As Long
'turn off background processes
With Excel.Application
.ScreenUpdating = False
.Calculation = Excel.xlCalculationManual
.EnableEvents = False
End With
'put SKUs and current production amounts into arrays
skuArr = Range("Summary!SKUS").Value
prodArr = Range("Summary!CurrentProd").Value
'find first empty row of detail worksheet
postRow = 1 + Worksheets("Detail").Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
'save date and time
currDate = Range("Summary!CurrentDate").Value
currTime = Range("Summary!CurrentTime").Value
With Worksheets("Detail")
'write date, time, SKU, and new prod amount to detail sheet
'cell formatting lines can be eliminated if Detail sheet is preformatted
For i = LBound(skuArr, 1) To UBound(skuArr, 1)
If Not (prodArr(i, 1) = "") Then
.Cells(postRow, 1).Value = currDate
.Cells(postRow, 1).NumberFormat = "mm/dd/yy"
.Cells(postRow, 2).Value = currTime
.Cells(postRow, 2).NumberFormat = "HH:MM"
.Cells(postRow, 3).Value = skuArr(i, 1)
.Cells(postRow, 3).HorizontalAlignment = xlCenter
.Cells(postRow, 4).Value = prodArr(i, 1)
postRow = postRow + 1
End If
Next i
End With
'Clear posted amounts from summary sheet
Range("Summary!CurrentProd").Value = ""
With Excel.Application
.ScreenUpdating = True
.Calculation = Excel.xlCalculationAutomatic
.EnableEvents = True
End With
End Sub
答案2
也许可以使用数据透视表来汇总总产量,并将 SKU 总数链接到 ColumnD 第一张表公式中:
但这并未试图解决订单完成时应该发生什么的情况。