[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『在庫管理』(ヨンヨン)
こんにちは、2・3年に一度位質問させて頂いております。よろしくお願い致します。 30品目について、それぞれs数と袋数の2種類の在庫を管理したいと思います。 左の一覧表に日付と品目の欄を作り、s数の入庫・出庫と袋数の入庫・出庫をランダムに入力すると 右に作った一覧表に30品目の在庫が一目瞭然に確認できる様な管理表を作りたいのですがどうすればいいでしょうか? よろしくお願いします。 (エクセルのバージョンは不明、OSはWindowsXPです。)
日付と在庫一覧はどう関連するの? 入庫/出庫の管理だけで前日(前月?)在庫はどうするの?
例表などを提示すべき。
(GobGob)
表の形は変わってもかまいませんが、下記のような形で考えています。 品目 入庫s 出庫s 入庫袋数 出庫袋数 s 袋 日付 3 100 70 8 2 1 2 3 30 6 4 5
管理は一ヶ月ごとで考えており、前月の在庫もどうにかして反映させたいと思います。
お願い致します。
>前月の在庫もどうにかして反映させたい
ということなら、前月在庫を把握しなきゃいけないね。 まさか、この左側のデータが、大昔から未来永劫にずっと同じシートに入力していくってことじゃないんだろうから (そういう構成もありだけど、運用面で大変になるので避けたほうがいい)
・シートは、月ごとにわける ・右側の表に前月末kg在庫と前月末袋在庫列を設けて、そこに前月末在庫をいれておいて SUMIFあたりで取得した今月在庫と、前月末在庫で計算して結果をだす ・あるいは、【前のシート(それが前月シートだとして】の値を参照して計算する
こんな構えがいいんじゃない?
(ぶらっと)
早速のご回答、ありがとうございました。 SUMIFを使ってトライしてみましたが、出庫と入庫の差がうまくいきません。 具体的にどのような式を入れれば出せますか?教えてください。お願い致します。
私なんかより関数のスペシャリストさん達がたくさんおられるので、仕様さえ明確になれば 回答はすぐにアップされると思うけど、前月末在庫はどのように把握する? 列を追加して、そこに手入力しておく? それとも、過去から現在、また未来にわたって、同じシートで明細を持つ?
(ぶらっと)
>管理は一ヶ月ごとで考えており >30品目について 入出庫は1ヶ月に各々何回ずつ位あるのでしょうか?
入出庫は、まちまちでなんともいえませんが、1品目で10〜20回ほどあります。
どうぞ、よろしくお願い致します。
(ヨンヨン)
う〜ん・・・ おすすめとしては、月ごとにシートをわけて
左側のリスト
A列 B列 C列 D列 E列 F列 日付 品目 入庫s 出庫s 入庫袋数 出庫袋数
右側のリスト
H列 I列 J列 K列 L列 品目 s 袋 s 袋 1 10 1 2 20 2 3 30 3 4 40 4 5 50 5
こんなようなレイアウトにして I列、J列には、あらかじめ前月の月末在庫数をいれておく。
で、K2 に =I2+SUMIF(B:B,H2,C:C)-SUMIF(B:B,H2,D:D) L2 に =J2+SUMIF(B:B,H2,E:E)-SUMIF(B:B,H2,F:F)
k2:L2を選択して下にフィルコピー。(式そのものは、もっとスマートなものもあると思うけど)
エキスパートさんなら、この I列、J列の前月末在庫も、前月のシートを参照して自動転記なんてことも お茶の子さいさいだと思うけど、素人の自分がやると、もう、しっちゃかめっちゃかの長ったらしい式になるので。
これをVBAでやるなら、お手伝いはできるけど。
(ぶらっと)
30品目 × 15回 = 450行 エクセルの1枚のシートとすると、印刷すれば約 10枚 全体を把握しづらいですが。
参考まで、VBA案。
シート要件は↑でアップしたものを前提。 最初のシート(ブックの一番左がわのシート)には、その前月のシートが存在しないので I列、J列は、前月末在庫を手入力。2番目のシート以降は、直前のシートから最終残高を抽出。
かならず、処理したい月のシートをアクティブにして実行。
Sub Sample() Dim z As Long Dim shn As String
With ActiveSheet If MsgBox("シート: " & .Name & " の処理をします。よろしいですか?", vbYesNo) = vbNo Then Exit Sub z = .Range("H" & .Rows.Count).End(xlUp).Row If .Index > 1 Then shn = .Previous.Name .Range("I2:I" & z).Formula = "=" & shn & "!K2" .Range("J2:J" & z).Formula = "=" & shn & "!L2" End If .Range("K2:K" & z).Formula = "=I2+SUMIF(B:B,H2,C:C)-SUMIF(B:B,H2,D:D)" .Range("L2:L" & z).Formula = "=J2+SUMIF(B:B,H2,E:E)-SUMIF(B:B,H2,F:F)" End With
End Sub
(ぶらっと)
上で提示した関数処理案で、最初のシート以外のI列、J列に対して、前のシートから月末在庫を持ってくる案。 コメントしたように、私のレベルでは普通にやると、めちゃくちゃ長くなるので、少しさぼらせてもらって。
まず、各シートの名前は 2013年9月 とか 2013年10月 といったものにしておく。 2013年10月であれば、前のシートのシート名は 2013年9月。
で、N1 に =RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1))) N2 に =TEXT(DATE(YEAR(N1),MONTH(N1),0),"yyyy年m月")
これで、N1 に今月のシート名、N2に前月のシート名が入るので
I2 : =INDIRECT(N$2&"!K"&ROW()) J2 : =INDIRECT(N$2&"!L"&ROW())
I2:J2 を選択して下にフィルコピー。
繰り返すけど、一番左側のシートは前月末在庫を手入力。
(ぶらっと)
データ数からいって、1枚のシートでやるのは無理があります。 各品目毎に1枚のシートとし、各月の全体の在庫を表示するシートを作ります。 各品目毎のシートは月ごとではなく、1年間続けて使います。 シート1(品目1) A列 B列 C列 D列 E列 F列 G列 日付 入庫s 出庫s 在庫s 入庫袋数 出庫袋数 在庫袋数 ・ ・ シート30(品目30)
在庫シート (4月分) A列 B列 C列 D列 E列 F列 G列 日付 (1)在庫kg (1)在庫袋数 (2)在庫s (2在庫袋数 ・・・・・・・・・・・・ 4/1 4/2 (NB)
このやり方でやってみます。
ありがとうございました。
ぷらっと様もありがとうございました。
私には、難しすぎました!
せっかく、教えて頂いたのにすみません。
(ヨンヨン)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.