Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6698 / 13646 ツリー ←次へ | 前へ→

【43694】やっかいな集計 やっかい者 06/10/23(月) 11:23 質問[未読]
【43699】Re:やっかいな集計 Jaka 06/10/23(月) 12:17 発言[未読]
【43700】Re:やっかいな集計 かみちゃん 06/10/23(月) 12:18 発言[未読]
【43705】Re:やっかいな集計 やっかい者 06/10/23(月) 13:29 質問[未読]
【43706】Re:やっかいな集計 かみちゃん 06/10/23(月) 13:43 発言[未読]
【43707】Re:やっかいな集計 やっかい者 06/10/23(月) 13:52 質問[未読]
【43709】Re:やっかいな集計 かみちゃん 06/10/23(月) 14:04 発言[未読]
【43710】Re:やっかいな集計 かみちゃん 06/10/23(月) 14:29 発言[未読]
【43713】Re:やっかいな集計 やっかい者 06/10/23(月) 15:05 お礼[未読]
【43711】Re:やっかいな集計 やっかい者 06/10/23(月) 14:43 質問[未読]
【43712】Re:やっかいな集計 かみちゃん 06/10/23(月) 14:48 発言[未読]

【43694】やっかいな集計
質問  やっかい者  - 06/10/23(月) 11:23 -

引用なし
パスワード
   駆け出しの若輩者です。
にっちもさっちもいかず、こまっています。内訳は下記の通りです。

  A     B    C      D     E     F
入庫ロットNo.  入庫数量  出庫ロットNo.  出庫数量  在庫ロットNo. 在庫数量
06.12.13-2  2,360  06.11.23-3  1,120   06.09.07-3    980
06.10.10-1  1,000  07.02.10-1   120   06.10.10-1   1,000
06.11.23-3  3,325  06.12.13-2   990   06.11.23-3   2,205
07.02.10-1   530  07.02.10-1   380   06.12.13-2   1,080
06.09.07-3   980  06.12.13-2   290   07.02.10-1    150

上記のようなものです。
入力はUserFormで行なうようにしましたが、どのロットNo.が在庫?kgとする方法が出来ません。上記の入出庫、在庫管理をどのようにしたら良いのでしょうか。
どなたか教えてください。(説明がまずいでしょうか)
入庫、出庫の入力は、同日と別々の日があります。宜しくお願いいたします。

【43699】Re:やっかいな集計
発言  Jaka  - 06/10/23(月) 12:17 -

引用なし
パスワード
   標準でついている、データ → フォーム を使ってみるのも手かも。
検索もできるし。

【43700】Re:やっかいな集計
発言  かみちゃん  - 06/10/23(月) 12:18 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>どのロットNo.が在庫?kgとする方法が出来ません。
>上記の入出庫、在庫管理をどのようにしたら良いのでしょうか。

ロット単位の在庫管理は、昔手がけたことがあるのですが、
ご提示のロットNo.と在庫の関係がどういう関係にあるのか今ひとつ理解できません。
ご提示のシートイメージからどのようなデータを取得したいのでしょうか?

【43705】Re:やっかいな集計
質問  やっかい者  - 06/10/23(月) 13:29 -

引用なし
パスワード
   ▼かみちゃん さん:
>こんにちは。かみちゃん です。
>
>>どのロットNo.が在庫?kgとする方法が出来ません。
>>上記の入出庫、在庫管理をどのようにしたら良いのでしょうか。
>
>ロット単位の在庫管理は、昔手がけたことがあるのですが、
>ご提示のロットNo.と在庫の関係がどういう関係にあるのか今ひとつ理解できません。
>ご提示のシートイメージからどのようなデータを取得したいのでしょうか?
お手数をお掛けします。
やりたいとしている事は、入庫ロットNo.の物を?kg出庫(一度に出庫の場合と、数日にまたがり出庫する場合があります)すると、そのロットNo.のものは、現在?kg在庫している、の表示を「E」にロットNo.、「F}に在庫数量を転記したいのです。
(サンプルをダミーとしてE、F,に記入しています)
記入が洩れましたが、出庫時のロットNo.は先入れ先出しとは決まっておらず、ランダムなロットNo.で出庫されます。(記入していませんが、入出庫時はその日の月日を入力します)
説明が下手ですみません。

【43706】Re:やっかいな集計
発言  かみちゃん  - 06/10/23(月) 13:43 -

引用なし
パスワード
   こんにちは。かみちゃん です。

> 入庫ロットNo.の物を?kg出庫(一度に出庫の場合と、数日にまたがり出庫する場合
> があります)すると、そのロットNo.のものは、現在?kg在庫している、の表示を
> 「E」にロットNo.、「F}に在庫数量を転記したいのです。

在庫ロットNo.は、入庫ロットNo.順でいいですか?
入庫ロットNo.は、重複するデータはないのですか?
出庫ロットNo.にだけあって、入庫ロットNo.にないデータは集計しないということでいいですか?
在庫量は、ロットNo.ごとに、「入庫数量」−「出庫数量の合計」でいいですか?
数量は、kgということでいいですか?

【43707】Re:やっかいな集計
質問  やっかい者  - 06/10/23(月) 13:52 -

引用なし
パスワード
   ▼かみちゃん さん:
>こんにちは。かみちゃん です。
>
>> 入庫ロットNo.の物を?kg出庫(一度に出庫の場合と、数日にまたがり出庫する場合
>> があります)すると、そのロットNo.のものは、現在?kg在庫している、の表示を
>> 「E」にロットNo.、「F}に在庫数量を転記したいのです。
>
>在庫ロットNo.は、入庫ロットNo.順でいいですか?
>入庫ロットNo.は、重複するデータはないのですか?
>出庫ロットNo.にだけあって、入庫ロットNo.にないデータは集計しないということでいいですか?
>在庫量は、ロットNo.ごとに、「入庫数量」−「出庫数量の合計」でいいですか?
>数量は、kgということでいいですか?
度々お手数をお掛けします。
おおせの通りです。ただ、入庫ロットNo.が無いものは、出庫されませんので申し添えておきます。
 宜しくお願いします。

【43709】Re:やっかいな集計
発言  かみちゃん  - 06/10/23(月) 14:04 -

引用なし
パスワード
   こんにちは。かみちゃん です。

> おおせの通りです。

それであれば、
在庫ロットNo. 在庫数量
07.02.10-1     150
をどのように計算するのか教えていただけませんか?
入庫数量は、530
出庫数量の合計は、120+380
でこれらを差し引くと、30になるのかなぁと思ったのですが・・・

ちなみに、在庫数量は、
=SUMIF(A:A,E2,B:B)-SUMIF(C:C,E2,D:D)
こういう数式で計算できると思ったのです。

【43710】Re:やっかいな集計
発言  かみちゃん  - 06/10/23(月) 14:29 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>在庫ロットNo. 在庫数量
>07.02.10-1     150
>をどのように計算するのか教えていただけませんか?
>入庫数量は、530
>出庫数量の合計は、120+380
>でこれらを差し引くと、30になるのかなぁと思ったのですが・・・

上記については、30が正しいのであれば、以下のような感じのコードでできると思います。

Sub Macro1()
 Dim vntData As Variant
 Dim i As Long, j As Long
 Dim swap As String
  
 '入庫ロットNo.を配列データに取得
 vntData = Range("A2", Cells(Rows.Count, 1).End(xlUp)).Value
  
 '配列データ内を並べ替え
 For i = 1 To UBound(vntData, 1)
  For j = UBound(vntData, 1) To i Step -1
   If vntData(i, 1) > vntData(j, 1) Then
    swap = vntData(i, 1)
    vntData(i, 1) = vntData(j, 1)
    vntData(j, 1) = swap
   End If
  Next
 Next

 '配列データを出力して、在庫計算
 With Range("E2").Resize(UBound(vntData, 1))
  .Value = vntData
  '在庫計算(入庫数量の合計−出庫数量の合計)
  .Offset(, 1).Formula = "=SUMIF(A:A,E2,B:B)-SUMIF(C:C,E2,D:D)"
  '計算結果を値にする
  .Offset(, 1).Value = .Offset(, 1).Value
 End With
End Sub

結局整理すると、並べ替えと、SUMIF数式だけでできてしまいました(^^;

【43711】Re:やっかいな集計
質問  やっかい者  - 06/10/23(月) 14:43 -

引用なし
パスワード
   ▼かみちゃん さん:
>こんにちは。かみちゃん です。
>
>> おおせの通りです。
>
>それであれば、
>在庫ロットNo. 在庫数量
>07.02.10-1     150
>をどのように計算するのか教えていただけませんか?
>入庫数量は、530
>出庫数量の合計は、120+380
>でこれらを差し引くと、30になるのかなぁと思ったのですが・・・
>
>ちなみに、在庫数量は、
>=SUMIF(A:A,E2,B:B)-SUMIF(C:C,E2,D:D)
>こういう数式で計算できると思ったのです。
その通りです。
入庫された一ロットは在庫がなくなるまで(何日掛かるか分かりませんが)出庫数量をプラスし、残のロット数量を確認し出庫処理をするものです。
どの時点で在庫がゼロになるのか、が不明な為私の知識では数式が出来ません。
宜しくお願いします。

【43712】Re:やっかいな集計
発言  かみちゃん  - 06/10/23(月) 14:48 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>宜しくお願いします。

[#43710]をご確認ください。

【43713】Re:やっかいな集計
お礼  やっかい者  - 06/10/23(月) 15:05 -

引用なし
パスワード
   ▼かみちゃん さん:
>こんにちは。かみちゃん です。
>
>>在庫ロットNo. 在庫数量
>>07.02.10-1     150
>>をどのように計算するのか教えていただけませんか?
>>入庫数量は、530
>>出庫数量の合計は、120+380
>>でこれらを差し引くと、30になるのかなぁと思ったのですが・・・
>
>上記については、30が正しいのであれば、以下のような感じのコードでできると思います。
>
>Sub Macro1()
> Dim vntData As Variant
> Dim i As Long, j As Long
> Dim swap As String
>  
> '入庫ロットNo.を配列データに取得
> vntData = Range("A2", Cells(Rows.Count, 1).End(xlUp)).Value
>  
> '配列データ内を並べ替え
> For i = 1 To UBound(vntData, 1)
>  For j = UBound(vntData, 1) To i Step -1
>   If vntData(i, 1) > vntData(j, 1) Then
>    swap = vntData(i, 1)
>    vntData(i, 1) = vntData(j, 1)
>    vntData(j, 1) = swap
>   End If
>  Next
> Next
>
> '配列データを出力して、在庫計算
> With Range("E2").Resize(UBound(vntData, 1))
>  .Value = vntData
>  '在庫計算(入庫数量の合計−出庫数量の合計)
>  .Offset(, 1).Formula = "=SUMIF(A:A,E2,B:B)-SUMIF(C:C,E2,D:D)"
>  '計算結果を値にする
>  .Offset(, 1).Value = .Offset(, 1).Value
> End With
>End Sub
>
>結局整理すると、並べ替えと、SUMIF数式だけでできてしまいました(^^;
有難うございました。SUMIFを使うのですね。
ご親切に、解釈まで入れていただき、本当に感謝です。厚くお礼申し上げます。

6698 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free