Я хотел бы иметь возможность использовать страницу ввода данных или форму для отслеживания ежемесячного выполнения заказов. У нас есть некоторое количество SKU, скажем, 10, и различное количество заказов на каждый SKU. Производство завершается неоднородным количеством от одного до всех SKU(ов) каждый день, и регистрация производства может происходить в любое время, более одного раза, в любой день (24/7).

Если SKU были перечислены в столбце A, общий заказ в столбцах B и I (или операторе производства) проводил текущее производство в столбце C, я хотел бы, чтобы столбец D возвращал количество оставшихся заказов (таким образом, все ранее введенные производства по этому SKU хранится (с датой и временем) на другом листе и постоянно суммируется.)

SKU    Total Order   Current Production    Remaining Production
A       15,000         100                     15,000 -(100+ previous production of A)
B       2,000          0                       2,000 - (previous production of B)
C       7,500          3,000                   7,500 - (3,000 + previous production C)

Спасибо за любую помощь. Лист ввода данных (или форма) важен из-за количества имеющихся у нас SKU (более 10), а также количества и профессионализма людей, вводящих данные.

2 ответа2

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
0

Может быть, сводная таблица для суммирования общего объема производства и связывания итогов SKU оттуда в формулу первого листа ColumnD:

Пример SU593676

Но это не пытается решить, что должно произойти, когда заказ будет выполнен.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .