• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル在庫数量の更新について)

エクセル在庫数量の更新について

このQ&Aのポイント
  • エクセル在庫数量の更新についてについて、生産日ファイルと集計表ファイルを利用して商品の在庫管理をしています。生産日ファイルのD列に倉庫、E列に商品、F列に日付、G列に朝の時点での在庫数量の情報が入っています。集計表ファイルには翌日に出荷する予定が入っており、商品ごとの合計が計算されています。製造年月日が古いものから順に在庫数量を更新する方法を教えてください。
  • エクセル在庫数量の更新について、生産日ファイルと集計表ファイルを使って在庫管理を行っています。生産日ファイルには倉庫、商品、日付、在庫数量の情報があります。集計表ファイルには翌日の出荷予定が入っており、商品ごとの合計が計算されています。製造年月日が古い順に在庫数量を更新する方法を教えてください。
  • エクセル在庫数量の更新について教えてください。生産日ファイルと集計表ファイルを利用して在庫管理をしています。生産日ファイルには倉庫、商品、日付、在庫数量の情報があります。集計表ファイルには翌日の出荷予定が入っており、商品ごとの合計が計算されています。製造年月日が古い順に在庫数量を更新する方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.2

生産日ファイルでは、同じ倉庫で同じ商品の場合、日付の古い順に並んでいるのを前提としています。 計算の結果、生産日ファイルの数量が0になった行は削除するようになっています。 削除したくない場合は、コード中の該当箇所を削除してください。 計算の結果、集計表ファイルの値も変更しています。 変更したくない場合は、コード中の該当箇所を削除してください。 このコードは、同じファイルに、「生産日」というシートと「集計表」というシートがある、という条件で作りました。 別々のファイルであれば、 冒頭部分を Set Sh0 = Workbooks("生産日ファイルのファイル名").Worksheets("シート名") Set Sh1 = Workbooks("集計表ファイルのファイル名").Worksheets("シート名") というように変更する必要があります。 WEB上で見栄えを良くするために、半角スペース2個を全角スペース1個に置換しています。 実際に使う場合は、元に戻してください。元に戻さないとエラーになります。 Sub test()   Dim Sh0 As Worksheet, Sh1 As Worksheet   Set Sh0 = Worksheets("生産日")   Set Sh1 = Worksheets("集計表")      Dim t As Range   Dim 商品 As String, 倉庫 As String, 出荷 As Long   Dim r As Long   With Sh1     For Each t In .Range(.Range("C6"), .Range("H10"))       出荷 = t.Value       商品 = t.EntireRow.Cells(1).Value       倉庫 = t.EntireColumn.Cells(5).Value              With Sh0         r = 3         Do Until .Cells(r, 1).Value = "" Or 出荷 = 0           If .Cells(r, 1).Value = 倉庫 And _            .Cells(r, 2).Value = 商品 Then             If .Cells(r, 4).Value >= 出荷 Then               .Cells(r, 4).Value = .Cells(r, 4).Value - 出荷               出荷 = 0             Else               出荷 = 出荷 - .Cells(r, 4).Value               .Cells(r, 4).Value = 0             End If           End If           r = r + 1         Loop       End With            '集計表の値を変えたくなかったら、この下のコード1行を削除してください       t.Value = 出荷     Next t   End With      '数量が0の行を削除   '削除したくない場合はこの下のコード5行を削除してください   With Sh0     For r = .Cells(.Rows.Count, 4).End(xlUp).Row To 3 Step -1       If .Cells(r, 4).Value = 0 Then .Rows(r).Delete     Next r   End With    End Sub

donald1982
質問者

お礼

思っていた通りのことが出来ました。 教えていただいてありがとうごいざいます。 マクロをもっともっと勉強していきます!

その他の回答 (2)

  • layy
  • ベストアンサー率23% (292/1222)
回答No.3

生産日ファイルにて、出荷予定数H列、残在庫数I列、出荷日J列など変動を計算させるための情報列を用意し、業務終了でI列からG列のマクロ更新。 まずは、必要となる値はセルへPUTする。計算で出来るかはその次、この考え方のが無難と思います。 ほかの回答がとんな結果かは検証してないのでわかりません。解説をもらって下さい。 更新の更新で2重に引かれたりしないようにしないと。

  • layy
  • ベストアンサー率23% (292/1222)
回答No.1

例えば、 出荷予定量=10に対し、実際は=20や=5となる可能性ありますか?。 現在在庫25→出庫30→入庫20、となるとき最終値15だけ管理していますか?。 (同じ生産日であるとき、一時的にマイナス在庫も考慮必要) 実際の出荷作業はエクセルの入力した後ですか、前ですか?。 これらを考えると 生産日ファイル、集計表ファイル、は元になるデータ群ですので、 経緯も残していない状態でリアルタイムでこの2シートを更新するのはどうかと思います。 基本的には1日1回更新、とした方が良いです。 シートをもう一つ準備し随時入力しリアルタイムの在庫状況を管理する、 その日の業務が終わったら、 それらを生産日ファイルと集計表ファイルに反映する運用をおススメします。 シート1、シート2からデータを取得、算出しシート3に結果を表示する という機能は可能です。

donald1982
質問者

補足

>出荷予定量=10に対し、実際は=20や=5となる可能性ありますか?。 あります。その際には関数やマクロを利用しないで手で訂正入力するつもりです。 >現在在庫25→出庫30→入庫20、となるとき最終値15だけ管理していますか?。 入庫は毎日ではないので手で訂正入力しています。 >実際の出荷作業はエクセルの入力した後ですか、前ですか? 実際に出荷されるのは、エクセルに入力された後です。 出荷数量が確定してから個人的に持っている生産日情報を更新しています。

関連するQ&A

専門家に質問してみよう