[[20190317113857]] 『ピッキング』(悩めるボムヘイ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ピッキング』(悩めるボムヘイ)

フリーロケーションで倉庫管理しており、入荷した商品は空いている枠列に置かれます。置かれた枠列と数量は報告してもらっています。翌日の出荷する際どの枠列からピッキングすればいいかわかるようにしたいです。伝わるように、リンゴとみかんにしてますが、実際は50種類ぐらいあり、枠列は200ぐらいあります。現在は手書きで倉庫の状況を見ながら、手書きでトラックの積み込み表に書き込んでいます。➀と⓶はそれぞれエクセルのシートがあります。
➀と⓶のエクセルシートを使って?Bを作りたいです。色々調べましたがわかりませんでした。どなたかお知恵をお貸しください。

	➀翌日の出荷		⓶倉庫の状況											
車番	銘柄	出荷数		 枠列	数量	枠列	数量
1	リンゴ	25	 リンゴ 215	20	218	7
1	みかん	4	 みかん 141	6	143	6
2	リンゴ	2						
2	みかん	8							

	?Bピッキング表							
車番	銘柄	出荷数	枠列	数量	枠列	数量			
1	リンゴ	25	215	20	218	5			
1	みかん	4	141	4					
2	リンゴ	2	218	2					
2	みかん	8	141	2	143	6			

< 使用 Excel:Excel2010、使用 OS:Windows10 >


1)この意味は、「倉庫の状況」のシートが、予め更新されているということでしょうか?

>置かれた枠列と数量は報告してもらっています。

2)出荷の、優先順位は、左側の枠列から選ぶことになるのでしょうか。

3)在庫が足りないということは考えなくて良いでしょうか。

4)数式でしょうか。マクロでもよいですか。

(マナ) 2019/03/17(日) 14:41


左側ではなくて右側の倉庫の状況のシートの枠列から選びます。

それから、在庫は 翌日の出荷で全てなくなります。
翌日の出荷=倉庫在庫と考えられるので在庫が足りなくなる
事はありません

本当に悩んでます
数式でもマクロでもどちらでも結構です

(悩めるボムヘイ) 2019/03/17(日) 15:16


>左側ではなくて右側の倉庫の状況のシートの枠列から選びます。

そうなのですが

例えば、リンゴの場合、
枠列215と218にありますが、
どちらの枠列から取り出すかは、気にしなくて良いですか。

(マナ) 2019/03/17(日) 15:36


考えていただいてありがとうございます
りんごの取り出す枠は215からでも218からでも
どちらからでもいいです。
(悩めるボムヘイ) 2019/03/17(日) 15:51

お試しください
 Option Explicit

 Sub test()
    Dim ws計画 As Worksheet
    Dim ws在庫 As Worksheet
    Dim wsピッキング As Worksheet
    Dim dic As Object
    Dim v
    Dim i As Long, j As Long, n As Long
    Dim 商品 As String
    Dim k As Long, tmp As String

    Set ws計画 = Worksheets("翌日の出荷")
    Set ws在庫 = Worksheets("倉庫の状況")
    Set wsピッキング = Worksheets("ピッキング表")

    Set dic = CreateObject("Scripting.dictionary")
    v = ws在庫.Cells(2).CurrentRegion.Value

    For i = 2 To UBound(v, 1)
        商品 = v(i, 1)
        Set dic(商品) = CreateObject("System.collections.queue")
        For j = 2 To UBound(v, 2) Step 2
            If IsEmpty(v(i, j)) Then Exit For
            For n = 1 To v(i, j + 1)
                dic(商品).enqueue v(i, j)
            Next
        Next
    Next

    wsピッキング.UsedRange.ClearContents
    ws計画.Cells(1).CurrentRegion.Copy wsピッキング.Cells(1)

    For i = 2 To wsピッキング.Cells(Rows.Count, 1).End(xlUp).Row
        商品 = wsピッキング.Cells(i, 2).Value
        If dic.exists(商品) Then
            k = 2
            For j = 1 To wsピッキング.Cells(i, 3).Value
                If dic(商品).Count Then
                    tmp = dic(商品).dequeue
                    If tmp <> wsピッキング.Cells(i, k).Value Then
                        k = k + 2
                        wsピッキング.Cells(i, k).Value = tmp
                    End If
                    With wsピッキング.Cells(i, k + 1)
                        .Value = .Value + 1
                    End With
                End If
            Next
        End If
    Next

    With wsピッキング.UsedRange
        ws在庫.Cells(2).Resize(, 2).Copy .Cells(4).Resize(, .Columns.Count - 3)
    End With

 End Sub

(マナ) 2019/03/17(日) 16:24


本当にありがとうございました。
うまくマクロを走らせることが出来ました。
ずっと悩んで式を考えたり、ネットを探したりしましたが、無理でした。
この短時間でマクロを組んでくださり驚きです。
本当にありがとうございました。
(悩めるボムヘイ) 2019/03/17(日) 19:10

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.