Utilizando condições para gravar uma nova linha na nova planilha para retornar o valor

0

Gostaria de poder usar uma página de entrada de dados ou um formulário para acompanhar o cumprimento mensal dos pedidos. Temos um número de SKUs, digamos 10, e vários números de pedidos em cada SKU. A produção completa uma quantidade não uniforme de um para todos os SKUs por dia e a postagem da produção pode acontecer a qualquer momento, mais de uma vez, em qualquer dia (24/7).

Se os SKUs foram listados na coluna A, o pedido total na coluna B e I (ou um operador de produção) registrou a produção atual na coluna C, gostaria que a coluna D retornasse a quantidade de pedidos restantes (assim todos inseridos anteriormente produção nessa SKU sendo mantida (com data e hora) em uma folha diferente e sendo continuamente somada.)

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)

Obrigado por qualquer ajuda. A folha de registro de dados (ou formulário) é importante devido ao número de SKUs que temos (mais de 10) e ao número e proficiência em Excel das pessoas que inserem os dados.

    
por KDelane 09.05.2013 / 22:52

2 respostas

1

O que você está procurando é adequado para uma solução VBA. Na minha pasta de trabalho de teste, eu configurei duas planilhas ao longo das linhas que você sugeriu.

A primeira é a planilha de resumo, que serviria como o formulário de entrada de dados. Os valores atuais de produção para um ou vários SKUs seriam inseridos na área realçada na coluna C, conforme mostrado na captura de tela abaixo. (Estou assumindo que os únicos outros itens inseridos à mão seriam o total de pedidos mensais para cada SKU.)

Os valores de produção seriam postados programaticamente em uma planilha de detalhes e, por sua vez, seriam resumidos como "produção anterior" na tabela de resumo da primeira planilha.

O lançamento no detalhe seria acionado por um botão de comando na planilha de resumo. Quando este botão é pressionado, cada valor na coluna de produção atual da planilha de resumo seria copiado para a folha de detalhes, junto com a SKU afetada e a data e hora atuais. Após a cópia, a coluna de produção atual da planilha de resumo será limpa.

O botão de comando seria criado a partir da guia Desenvolvedor da faixa de opções, inserindo um formulário de botão na folha de resumo. Em seguida, o código seria vinculado ao botão escolhendo o Modo de Design, clicando com o botão direito do mouse no botão e selecionando Exibir Código e colando o código no painel de edição que aparece.

Como esse processo está um pouco complicado, disponibilizei minha pasta de trabalho de teste por meio do link do Dropbox .

Planilha de resumo


Planilhadedetalhes

Código do botão de comando

  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
    
por 10.05.2013 / 05:41
0

Talvez uma Tabela Dinâmica para somar a produção total e vincular os totais de SKU de lá à primeira fórmula da coluna ColumnD:

Mas isso não tenta abordar o que deve acontecer quando um pedido é concluído.

    
por 09.05.2013 / 23:17