• ベストアンサー

エクセル 先出先入 (最古日付を表示)

エクセルでの在庫管理について教えて下さい。 シート内容として、商品名・出荷数・入庫数・在庫数があります。 毎月の、出荷数・入庫数・在庫数が列に追加で記載されていきます。 先入れ先出しを行いたい為、当月末(M列)の在庫数から、その在庫の一番古い入庫月を求める計算式をお教えください。 入庫は、在庫が0になってから補充する場合と、在庫が0になる前に補充する場合がございます。 宜しくお願いします。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1624/2466)
回答No.1

出荷数の合計から最初の月(1月)の入庫数を引く マイナスでなければ上記の差から翌月の入庫数を引く それを続けてマイナスになった月が一番古い入庫月 (在庫が0になった後の月が一番古い入庫月と思ったのですが前月がない1月が対応できない気がしたので) と考えた場合、計算式は分からないのでマクロでしたら N3を選択した状態で実行するとN5(最後の行)まで計算します。毎月表示したい一番上のセル(画像だと3行目)を選択して実行します。 Sub Test() Dim S As Range, c As Range, d As Range Dim TotalS As Long If Selection.Value <> "" Then If MsgBox("既にデータがあります。続けますか?", vbYesNo + vbInformation) = vbNo Then Exit Sub End If End If Set S = Selection For Each d In Range(Cells(3, "A"), Cells(Rows.Count, "A").End(xlUp)) TotalS = WorksheetFunction.SumIf(Range(Cells(2, "B"), Cells(2, S.Column - 1)), "出荷数", Range(Cells(d.Row, "B"), Cells(d.Row, S.Column - 1))) Cells(d.Row, "P").Value = TotalS For Each c In Range(Cells(d.Row, "B"), Cells(d.Row, S.Column - 1)) If Cells(2, c.Column).Value = "入庫数" Then If TotalS - Cells(d.Row, c.Column).Value < 0 Then Cells(d.Row, S.Column).Value = Cells(1, c.Column).Value Exit For Else TotalS = TotalS - Cells(d.Row, c.Column).Value End If End If Next Next End Sub

prock1982
質問者

補足

kkkkkm様 度々すみません。 先程のものですと、N列4行目(みかん)の一番古い入庫月は、1月と表示されるのですが、正しくは、3月になります。 宜しくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • kkkkkm
  • ベストアンサー率65% (1624/2466)
回答No.4

補足です。 1月と表示されるのがどこのセルを表示しているのか確認のために以下のコードを追加してみてください。 Cells(d.Row, S.Column).Value = Cells(1, c.Column).Value の後に Cells(d.Row, S.Column + 1).Value = Cells(1, c.Column).Address(0, 0) Cells(d.Row, S.Column + 2).Value = Abs(TotalS - Cells(d.Row, c.Column).Value) の2行を入れてください。 N列の横 O列に参照したセル番地が入ります。そこに記載されているデータをN列に転記してます。 P列には今ある在庫のうち上記で出た最古月としたときの在庫分で現在在庫にある数量が出ます。ただし、計算が合っていればですが…。

prock1982
質問者

お礼

kkkkkm様 申し訳ございません、こちらのアイテムの表記に誤りがあった為、上手く作動しなかったようです。 先程、修正したところ、正しく表示されました。 ご丁寧に教示くださりありがとうございました。 大変助かりました。

全文を見る
すると、全ての回答が全文表示されます。
  • kkkkkm
  • ベストアンサー率65% (1624/2466)
回答No.3

> N列4行目(みかん)の一番古い入庫月は、1月と表示されるのですが、正しくは、3月になります。 こちらでは3月になります。入庫数の上の月を表示していますが、3月の所が1月になっていることはないですよね。 > 当月末の在庫がゼロになる月(今回だとM列の7行目)の、一番古い入庫月は、表示無しにしたいのですが、可能でしょうか。 画像にM列7行目は無いのですが…。 在庫が0になるという事は出荷数のトータルから入庫数のトータルを引くと0になると思います。 出荷数のトータルから毎月の入庫数を引いていき、0未満になったときに該当月を記載しますので、上記の状態(結果が0未満にならない状態)だと何も表示されないはずですが、念のために0であれば何もしない状態に変更したコードとこちらで実行した結果の画像を出しておきます。 3月表示の件については、こちらで1月にならないので残念ながら今のところ手を付けられません。 Sub Test() Dim S As Range, c As Range, d As Range Dim TotalS As Long If Selection.Value <> "" Then If MsgBox("既にデータがあります。続けますか?", vbYesNo + vbInformation) = vbNo Then Exit Sub End If End If Set S = Selection For Each d In Range(Cells(3, "A"), Cells(Rows.Count, "A").End(xlUp)) If Cells(d.Row, S.Column - 1).Value <> 0 Then TotalS = WorksheetFunction.SumIf(Range(Cells(2, "B"), Cells(2, S.Column - 1)), "出荷数", Range(Cells(d.Row, "B"), Cells(d.Row, S.Column - 1))) For Each c In Range(Cells(d.Row, "B"), Cells(d.Row, S.Column - 1)) If Cells(2, c.Column).Value = "入庫数" Then If TotalS - Cells(d.Row, c.Column).Value < 0 Then Cells(d.Row, S.Column).Value = Cells(1, c.Column).Value Exit For Else TotalS = TotalS - Cells(d.Row, c.Column).Value End If End If Next End If Next End Sub

全文を見る
すると、全ての回答が全文表示されます。
  • kkkkkm
  • ベストアンサー率65% (1624/2466)
回答No.2

No1 一部訂正です。 Cells(d.Row, "P").Value = TotalS は不要ですので消しておいてください。 また、結果がおかしいとか考え方がおかしい場合、そのあたりを教えてただくと、マクロでよろしければお手伝いできると思います。

prock1982
質問者

補足

kkkkkm様 ご教示頂きありがとうございます。 お教え頂いたマクロをコピペしたのですが、結果が一部正しくありません。 何が影響しているのでしょうか。 また、当月末の在庫がゼロになる月(今回だとM列の7行目)の、一番古い入庫月は、表示無しにしたいのですが、可能でしょうか。 宜しくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excel 先入れ先出し残在庫について

    Excelでの在庫管理について教えてください。 シート内容として、Sheet1に区分・商品名・入荷数・出荷数・在庫数があります。 毎月、出荷数・入荷数・在庫数が列に追記されていきます。 先入れ先出しを行い、長期滞留の在庫数を把握したいため、 sheet2に当月末(sheet2のA1セル)の在庫の入庫日が3ヵ月以上前の入庫月と、その在庫残数を表示したく、その計算式をお教え頂きたくお願い致します。(添付、黄色部分が求めたい入庫月と在庫数量となります。)

  • エクセル 在庫管理(在庫数から入庫月を求める)

    エクセルでの在庫管理をご教示ください。 これまで手書きで計算していた入庫月をエクセルで行いたいと考えております。 在庫数からその在庫の一番古い入庫月を求める計算式をお教えください。 例: A列 商品名 2020/1月の B列 出荷数量 C列 入庫数量 D列 在庫数量 2020/2月の E列 出荷数量 F列 入庫数量 G列 在庫数量 2020/3月の H列 出荷数量 I列 入庫数量 J列 在庫数量 *K列に、3月の在庫数量(J列)の、一番古い在庫の入荷月を求める計算式を入力したいです。 宜しくお願い致します。

  • 在庫日付順に先入先出しをエクセルで管理できるのでしょうか?

    食品の賞味期限を管理しようとしています。 在庫日付順に先入先出しをエクセルで管理できるのでしょうか? 例えば、 材料名  ロットNo.  賞味期限  在庫 みかん  123     2008/3/1   10 みかん  124     2008/3/20   15 バナナ  111     2008/4/10   20 としておいて、 みかん  20出荷する場合、 みかん  124     2008/3/20   5 に エクセルで管理することできるのでしょうか? ごぞんじな方教えて頂けませんでしょうか? 宜しくお願い致します。

  • エクセルで在庫数を表示したい!

    定期的にロットの入った製品が入荷します。 A列に日付、B列に入荷数、C列に出荷数、D列に在庫数を入力しています。 D列は、=D1+B2-C2 で在庫数を算出しています。 この在庫数を大きくF1に表示するには、どのような計算式を入力すれば良いですか? 出荷される度に行が下がって(増えて?)いくので、単純にF1に =D2と入力できませんよね・・? 1つのロットだけなら良いのですが、複数ロットの総合計を算出させる為に、計算式を教えてもらいたいです。 お願い致します。

  • エクセルの複数シート集計について

    エクセルの集計について、困っています。 内容は、1枚目のシートに現在庫の集計結果を表示させ、 2枚目には、「出荷数」3枚目には、「入庫数」を入力するだけで、 1枚目に現在庫を表示するには、どのような方法がありますか? 入庫数や出庫数はどんどん増えていきます。 教えてください。よろしくお願いします。 シート1      現在庫  商品A 200  商品B 100  商品C 200 シート2(出庫)       4/5  4/8  4/15  商品A  50   15   20  商品B  20       15  商品C  10   10 シート3(入庫)      4/15  4/8  4/15  商品A  100  200  100  商品B  200      150  商品C  100   100

  • エクセルの関数について

    一つのセルに二つの計算式を入れる場合には、どうすればよいでしょうか。エクセルで商品の在庫管理表を作成したく、入荷を記入する列と、出荷を記入する列、在庫数の列を設け、在庫数の列に、入出荷の自動計算が入るようにしたいと思っております。IF関数を使ってみたのですが、うまくできず、どなかた教えていただけますようお願いいたします。

  • IF関数の論理式が作れない

    ・在庫(シート)   A    B     C 1 品物 在庫数 2 りんご  4 3 みかん  4 4 ぶどう  4 ・出荷(シート)   A     B      C   D 1 品物 在庫数  出荷数 残 2 りんご =在庫!B2    2    =B2-C2 在庫シートのC2にも、「残」数を載せたいのですが、式の作り方が分かりません。 VLOOKUPを使ってみようと思いましたが、なかなか思うようにいきません。 出荷シートのA列の商品が、在庫シートのA列にもあった場合(この場合は「りんご」)は、出荷シートのD列の数値を返す。 無かった場合(この場合は「みかん」「ぶどう」)は、在庫シートのB列の数値を返す。 IFの真偽は作れましたが、最初の論理式作りで手間取っています。 =IF(      ,VLOOKUP(A2,出荷!A:D,1,0),B2)    ↑この部分の論理式が不明です。 尚、在庫シートのB2には既に在庫数が載ってるのに、更に在庫数を載せるのか?と疑問を感じられると思いますが、その疑問は、申し訳有りませんが、指摘しないで下さい。

  • エクセルで入出庫数管理表

    倉庫で働いている者です。毎日メーカーから送ってもらうデータをプリントアウトして、商品をピッキングする作業しています。 ただ、在庫管理に関しては紙に書いて管理しているので、消しゴムでの紙がふやけ、手間です。 そこでエクセルで管理できる方法を教えてください。もしくは、どの本で勉強するのか知りたいです メーカーからは、A列に商品名 B列に出荷数 が記入されたデーターがきます。 自分としては、Sheet1に倉庫の現在庫数。A列に商品名 B列に現在庫数(これは自分で作成する) Sheet2に送られたデーターを張り付けると、Sheet1の現在庫数が自動で計算され引き算される 説明下手で申し訳ないです。 そんなことは可能でしょうか??

  • エクセル 在庫数を求める計算式

    エクセル2013を使用しています。 型番毎にシート管理していた在庫表を、 以下の内容で1シートにまためた形に変更したいと考えています。 型番毎の在庫数を求める計算式をお教え下さい。 A列:在庫管理する型番(34種類) B列:日付 C列:入荷 D列:出荷 E列:在庫 <例> 以下の場合3行目のE列(在庫:7)が1行目の同型番の、 E列(在庫:10)から算出される計算式。      A列   B列  C列  D列  E列 1行目 ABC型  11/20  0   5   10 2行目 DEF型  11/23  5   0   20 3行目 ABC型  11/24  0   3   7 ※A列に入る型番は注文次第なのでどの型番がいつくるかは未定となっています。 何卒よろしくお願い致します。

  • 在庫評価について初歩的質問

    初級シスアドの勉強をしています。質問カテゴリーをどこにしようか迷いましたが,お分かりの方,教えてください。商業系の勉強をきちんとしたことが無いので,困っています。 期首の在庫量,期間中の入庫量および期末の在庫量が与えられたとき,在庫(金額)の評価法として, 1.先入れ先出し法 2.後入れ先出し法 3.平均原価法 4.個別法 とがあるそうですが, 平均原価法の説明を見ると, 「仕入れた商品の平均原価にもとづいて期末棚卸商品の在庫評価を計算する。」とあります。 期間中に仕入れた商品について平均値を計算すればよいのですか? 期首在庫分と期末在庫分は計算に入れるのでか? その商品が期末に在庫になっているか否かに関係なく計算するのですか? たとえば,次の数値例でご説明おねがいします。      個数  単価 期首在庫 3個 10円 4月仕入 1個 11円 6月仕入 2個 12円 7月仕入 3個 13円 9月仕入 4個 14円 期末在庫 8個 

専門家に質問してみよう