使用条件写入新表上的新行以返回值

使用条件写入新表上的新行以返回值

我希望能够使用数据输入页面或表单来跟踪每月的订单执行情况。我们有一定数量的 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 第一张表公式中:

SU593676 示例

但这并未试图解决订单完成时应该发生什么的情况。

相关内容