月末の在庫数を下から順に検索する方法とは?

このQ&Aのポイント
  • 在庫管理表において、希望する月の月末在庫数を求める関数が作成できない場合、VLOOKUPの下から探すバージョンであるLOOKUPやSUMPRODUCTを検討することがあります。
  • LOOKUPやSUMPRODUCTを使用することで、指定した月の最後の取引を探すことが可能です。処理年月が空白の場合は空白を表示させるため、IF関数を組み合わせて利用します。
  • 具体的な方法は、処理年月が入力されているかを判定し、空白の場合は空白を表示させます。処理年月が入力されている場合は、LOOKUPやSUMPRODUCTを使用して該当する月の最後の取引を検索します。
回答を見る
  • ベストアンサー

LOOKUP?月末の在庫数を下から順に検索

この先ずっと入・出庫を延々記録する在庫管理表を作成しているのですが、 希望する月の月末在庫数を求める関数がどうにも作れません。 C12の処理年月の欄には、月末在庫数を知りたい年月を入力します。 C12の年月を元に、B17~無限の範囲で下から順に検索したいのです、 毎月末日に必ず入・出庫があるわけではないので、一致したその月の最後の取引を探してほしいんです。 簡潔に言うとVLOOKUPの下から探すバージョンなのですが、 ネットで色々と調べて過去の質問を参考にLOOKUPやSUMPRODUCT等考えてみたのですが、頭が足りず上手く出来ませんでした。 処理年月が空白の時は空白を表示させたいので、 =IF($C$12="","",☆) の関数の中で☆の部分をどのようにしたらいいか、ご教授宜しくお願い致します。 文で上手く説明が出来なかったので、詳細は添付した図から読み取ってもらえると幸いです。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.5

>同様にB17以下の日付のセルについても、表示形式「文字列」入力規則「10文字」で、必ず「yyyy/mm/dd」の形で打たせるようにしています。 リクツの上では,問題ありません。 C12を含め文字列で記入するということでしたら,若干変則的な計算ですが,たとえば C13: =IF(C12="","",SUMIF(B17:B9999,"<"&C12&"/99",C17:C9999)-SUMIF(B17:B9999,"<"&C12&"/99",D17:D9999)) と言った具合にすることはできます。 ただ,文字列ではなく日付として記入し,セルの書式設定の表示形式のユーザー定義で yyyy/mm/dd などのようにしておいた方が,エクセル的にはより使いやすくなります。 たとえば今作成しようとしている入力表を元に,四半期毎の集計とか棚卸しといった「データの二次加工」を行うのが容易になります。

sora86miku
質問者

お礼

度々のご回答ありがとうございます。 無事動作致しました! データは増えていくので、 =IF(C12="","",SUMIF(B17:B9999,"<"&C12&"/99",C17:C9999)-SUMIF(B17:B9999,"<"&C12&"/99",D17:D9999)) ↓ =IF(C12="","",SUMIF(B:B,"<"&C12&"/99",C:C)-SUMIF(B:B,"<"&C12&"/99",D:D)) というセル参照に変えさせてもらいました。 これでも無事動作したので、これを使わせて頂きたいと思います。 もしエラーが出たら大人しく「B17:B65536」といったセル参照にしたいと思います。 データの二次加工につきましては、 商品ごと(EXCELファイルごと)の月末在庫数を抜き出したり、現在庫数量を抜き出したりといったことはすることになると思います。 そちらのシステムはまだ作り出してもいないんですが、予定ではセルの名前を用いて絶対参照で在庫数量を抜き出すつもりです。 ユーザー定義「yyyy/mm/dd」などの設定にし直してみたのですが、やはり入力規則で文字列(文字数指定)を設定したいので、やはり年月日は文字列でいきたいと思います。 無事運用までいければ良いのですけど・・・それまでには教えてgooにたくさんお世話になりそうです。 説明下手な質問に答えて頂き、本当にありがとうございました。 関数の仕組みはじっくり考えてみます。

その他の回答 (5)

  • ki-aaa
  • ベストアンサー率49% (105/213)
回答No.6

#3,#4です。 捕捉を読みました。 合計行「B44:J44」の一行上に行を挿入し、合計行が「B45:J45」となったところで合計行の二行上「B43:J43」をコピーして合計行の一行上「B44:J44」に貼り付けをする。  ↓のように変えたらどうなります。 合計行「B44:J44」をコピーして、B45:J45」に貼り付けます。 合計行が「B45:J45」となったところで合計行の二行上「B43:J43」をコピーして合計行の一行上「B44:J44」に貼り付けをする。 それから、マクロを使って検索するのでしたら 下のほうから検索すれば、簡単です。

sora86miku
質問者

お礼

度々のご回答ありがとうございます。 それも考えてやってみたのですが、関数に組まれている合計行のセルが下に動いた時点で、 その関数は崩れてしまいました。 例えば、 I43=sum(C43:C44)の状態で44行目を45行目に移すと、I43の関数は I43=sum(C43:C45)になってしまうということです。 上手くオートフィルさせるには、関数の崩れない場所「I42」から、合計行「45」の一行上と二行上に正しくオートフィルさせないといけないという風に考えました。 あと、マクロでの検索はしません。 マクロを改善しなければ動作しないのであれば、マクロを組み直すという意味です。 今回の質問については解決致しましたので、これで締め切らせて頂きます。 度重なるご回答、お知恵を貸して頂きありがとうございました。

  • ki-aaa
  • ベストアンサー率49% (105/213)
回答No.4

#3です。 式に間違いがありました。 何も入力していないセルは一月になりその判定がありませんでした。 =IF(MONTH(B17)<>MONTH(B18),TEXT(B17,"yyyy/mm"),"") を次の式に変えてください。 =IF(TEXT(B17,"yyyy/mm")<>TEXT(B18,"yyyy/mm"),TEXT(B17,"yyyy/mm"),"")

sora86miku
質問者

お礼

ありがとうございます。 自分には理解すら精一杯の世界です・・ VLOOKUPを下からというのは、思ったよりも難しいんですね・・ 一生懸命マクロと関数を頑張ってみます。 まだ不具合だらけのシステムなので、続けてご教授頂ければ幸いです。

  • ki-aaa
  • ベストアンサー率49% (105/213)
回答No.3

こんにちわ I列の前に一列挿入して、 =IF(MONTH(B17)<>MONTH(B18),TEXT(B17,"yyyy/mm"),"") の式を入力すれば、 あとはVlookupで簡単にできると思います。 =VLOOKUP(TEXT($C$12,"yyyy/mm"),I:J,2,0)

sora86miku
質問者

お礼

ご回答ありがとうございました。 =IF(MONTH(B17)<>MONTH(B18),TEXT(B17,"yyyy/mm"),"") の関数には脱帽しました。凄いです・・ 活用の機会を探してみます。参考になるご回答をありがとうございました。

sora86miku
質問者

補足

こんにちわ*・v・ ご回答ありがとうございます。 教えて頂いた通りに作ってみました。 (利用する側にとっては関係がないので)不可視化させる列が出来てしまうのは、 あまり綺麗でないのですがそれでもちゃんと動くのならこの際・・・と思ったのですが 合計行の一行上に空白行を挿入した際に、上手くオートフィルされませんでした。 これは別の問題になってしまうのですが・・・。 現在B44:J44が合計を表示する行になっています。 B43:J43まで入出記録がいっぱいになった時には、「行追加」のマクロで合計を表示する行の一行上に行を追加させるようにしています。 例えばこの場合、 合計行「B44:J44」の一行上に行を挿入し、合計行が「B45:J45」となったところで合計行の二行上「B43:J43」をコピーして合計行の一行上「B44:J44」に貼り付けをする。 というマクロになっています。 ですがこのマクロを実行した時、オートフィルによるセル参照が崩れてしまいます。 今回ki-aaaさんに頂いた関数をアレンジして入れてみたのですが、例えば I43=IF(AND(B44=合計,B43=""),"",IF(TEXT(B43,"yyyy/mm")<>TEXT(B44,"yyyy/mm"),TEXT(B43,"yyyy/mm"),"")) と入れて行追加のマクロを実行すると、I43の関数が =IF(AND(B45=合計,B43=""),"",IF(TEXT(B43,"yyyy/mm")<>TEXT(B45,"yyyy/mm"),TEXT(B43,"yyyy/mm"),"")) と変わってしまいます・・。 行追加のマクロ内の「合計の二行上から一行上にコピペ」の作業を、 「合計の三行上から、合計の一行上までオートフィル」というマクロに書き換えられればいいんでしょうか? これも中々、すぐには完成しそうにありません・・・。 もしマクロを変えて上手くいけば、ki-aaaさんに頂いた関数で動作しそうなのですが、 出来れば不可視化列や不可視化行というものを作りたくないので、続けてご回答を募集致します。 続けてご教授頂ければ幸いです。

  • shinkami
  • ベストアンサー率43% (179/411)
回答No.2

的外れの回答ですが最新の在庫数でよければ 16行目以下だけのシートを追加して、 累計項目名列(I列)、累計計算列(J列)を追加して添付のような式をにします。 ※MAX関数,SUM関数の添え字設定の時に 列名をクリックすると添付のような式になります。 ここでA:AとはA列の全てがMAX関数の対象になります。

sora86miku
質問者

お礼

無事解決致しました。 この度はありがとうございました。

sora86miku
質問者

補足

ご回答ありがとうございます。 添付して頂いた画像通りに作ってみましたが、私が求めているものとは違いました。 説明不足で申し訳ありません。 最新の在庫数量は、B17:I17から下に向かって適当なところに合計を表示するための行を設けてあります。 その合計行に、C44=入庫数累計・D44=出庫数累計・I44=現在庫数と表示するようにしています。 データが増えてきた時には合計行の一行上に行を追加するマクロを組んでいます。 このマクロも、改善したい点があって出来ずにいるのですが・・・。それはまた別の話とさせて頂きます。 今回求めたいのは、最新の、現在の在庫数量ではなく、 指定した年月の月末在庫数量を求めたいのです。 例えば今日は2012年6月25日だけど、2012年4月末時点の在庫数量を知りたい。だとかそういうことです。 続けてご教授頂ければ幸いです。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

先に(ご質問では解決済みになっていますが)「毎日の在庫」の計算方法から。 I17: =IF(B17="","",SUM($C$17:C17)-SUM($D$17:D17)) 以下コピー。 この計算をよく分析して,その日までの累計入庫数からその日までの累計出庫数を差し引けば,当該日の在庫が求まる事を理解してください。 ご質問で掲示されたサンプルでは考慮されていませんが,リストの先頭に「前期から繰越された在庫数」がどこか別にあるときは,その数を繰り込まないと間違える事も注意してください。 その上で,指定月末の在庫数は,これと全く同じ考え方で計算できます。 手順: これもご相談ではっきり書かれていませんが,仮に今C12には「2012/3/1」のように年月日形式でキチンと日付を記入して,その上で表示だけで年/月を表しているとして。 D12には =IF(C12="","",SUMIF(B17:B9999,"<"&DATE(YEAR(C12),MONTH(C12)+1,1),C17:C9999)-SUMIF(B17:B9999,"<"&DATE(YEAR(C12),MONTH(C12)+1,1),D17:D9999)) のようにして,指定年月末日時点での在庫を計算します。

sora86miku
質問者

お礼

毎日の在庫数量の関数や繰越在庫数量までご配慮頂き、ありがとうございます。 大変助かりました。 この度は本当にありがとうございました。

sora86miku
質問者

補足

ご回答ありがとうございます。 本日在庫量の関数はそれで完璧でしたΣ(゜д゜) I17から合計行までオートフィルで問題なく動きました。ありがとうございます。 前期からの繰越は、欄を作るかどうか相談してみましたところ、 期毎にシートを変えたりする予定はないので、これから在庫数0からのスタートをした後はひたすら書き連ねていくそうです。 指定月末在庫数について、 処理年月のセルには表示形式「文字列」入力規則「7文字」で、必ず「yyyy/mm」の形で打たせるようにしています。 また、同様にB17以下の日付のセルについても、表示形式「文字列」入力規則「10文字」で、必ず「yyyy/mm/dd」の形で打たせるようにしています。 たくさんの部署で利用してもらう為、人によって入力の差異が出ると困るのでこのようにしました。 なので頂いた関数ではうまく動作致しませんでしたorz 表示形式「文字列」では厳しいのでしょうか・・ 続けてご教授頂ければ幸いです。

関連するQ&A

  • 在庫数を表示させたい

    アクセスの超初心者なのです。 今、簡単な在庫管理をしようとしてるのですが、フォームで入出庫数を入力すると下のほうに在庫数を表示させたいのです。 例えば「A-1」の在庫が10個合ったとします。A-1はコンボボックスを使いたいです。 10個のうち5個出庫したとすると下のように在庫数の欄が5個と表示させたいです。説明が下手ですみません(ーー;) カタログ番号  A-1 入庫数 出庫数   5   在庫数   5

  • 仕入計上が翌月になった場合の月末在庫金額について

    私の会社では、月末近くに発注した商品が月内に入庫されても、 仕入先の都合により伝票が翌月扱いになることがある上、 月内に出庫され売上が計上されることがあります。 例: 1/28 @1,000円の商品を100個発注(仕入計上は翌月) 1/29 100個入庫 1/31 オーダーが入り30個出庫し売上計上 この場合、1/31時点の在庫数は70個ですが、1/31時点の在庫金額と 1月分の売上原価はどのように計算するのが一般的でしょうか?

  • 毎月月末時点の数を求める関数

    1,在庫表で毎月末の在庫数量を関数で自動的に表示させる計算式が知りたいです。 2,毎月末ごとの数を抽出した後、別ファイルで月末在庫一覧表を作成し自動集計させることは可能でしょうか。 在庫表のフォームの項目は 出荷日、納品日、納品先、入り目、出荷個数、出荷数量(入り目×出荷個数)、出荷後残数量と横並びで、入荷数量から順に出荷数量が減算される計算式を入れています。 このような在庫表で品目ごとに10数個のファイルで管理しています。 注文を受けた順に上から下へ入力していて、出荷日、納品日は順不同、月末の日付で出荷があるとも限りません。 全く出荷のない月もあります。 よろしくお願いします。

  • プルダウン 在庫数の出し方

    プルダウンメニュー 別シート計算について 宜しくお願いいたします。 sheet1には A2/B2/C2/ 商品名/サイズ/貸出数/ 商品名/サイズ/貸出数 までは、入力規則でプルダウンで、商品名やサイズを指定できるようにしています。 SHEET2には A2/B2/C2/ 商品名/サイズ/現在の在庫数 が入力されています。 このSHEET1の( D2 )に、プルダウンで指定された 商品/サイズ/貸出数 = (SHEET2 在庫数)ー (SHEET1 C2 貸出数 )=現在の在庫数を 求めたいのですが、勉強不足で式がわかりません。 教えていただけないでしょうか? 使用ソフトはexcel2000です。 この回答に対し Excel2000をご利用の場合,シート1のD列では =IF(COUNTA(A2:C2)=3,SUMPRODUCT((Sheet2!$A$1:$A$1000=A2)*(Sheet2!$B$1:$B$1000=B2), Sheet2!$C$1:$C$1000)-C2,"") のように計算します。 これは理解できました。 たとえば sheet2 スカート 在庫数 2 sheet1 A2(商品 スカート)/B2(サイズ S)/C2(貸出数 2) と入力すると  D2(現在個数は0)表記ということはわかったのですが 次の段にまた、A3/B3/C3 に、同じ商品と貸出数を入力すると、D3 には -2 と表記に、ならないといけませんのに、 次の段に、同じ商品名・サイズを入力すると、在庫数は上記のD2と同じ数字になります。 これらを変えるにはどうすればよいのでしょうか?

  • Accessのレポートで日々の在庫数を求めるには?

    現在在庫管理のAccessアプリケーションを作っています。 商品別の指定期間の入出庫履歴の一覧をテーブルを基にしたレポートで表現したいと思っています。 データ基となる[T_商品別期間集計]の大まかな構成は以下の通りです。 (クエリにて指定のアイテムを指定期間で抽出しテーブルに書き込んであります) 日付 , 時刻 , 業務区分 , 前月繰越数 , 期間入庫数 , 期間返品数 , 期間出庫数 , 出庫先ID 2007/06/29 , , 7 , 52 , 1 , 0 , 0 , 0 , 0 2007/07/03 , , 2 , 0 , 0 , 1 , 0 , 0 , 0 2007/07/03 , 10:27:05 , 4 , 0 , 0 , 0 , 1 , 0 , 15780 2007/07/03 , 8:45:15 , 3 , 0 , 0 , 0 , 0 , 1 , 15857 2007/07/03 , 10:05:30 , 3 , 0 , 0 , 0 , 0 , 1 , 15631 2007/07/03 , 10:25:05 , 3 , 0 , 0 , 0 , 0 , 1 , 15816 2007/07/03 , 10:25:30 , 3 , 0 , 0 , 0 , 0 , 1 , 15780 このテーブルを基にして日付をグルーピングしたレポートを作りました。 日付グループフッターで日付ごとの入庫、返品、出庫の各値の合計をSum関数にて計算しています。 また、それらの合計値を計算し当日増減数を同じく計算させています[txt_当日の増減]。 現在の状態から、当日のこの商品の在庫数を日付グループのフッターに表示させたいのですが、 最終棚卸日(この例では2007/06/29)から当日までの入出庫数の計算をさせるにはどのような方法がありますでしょうか。 レポート内で計算した[txt_当日の増減]の当日までの集計と2007/06/29時点の在庫数を計算させる事ができれば、、、とは思うのですが、やり方がわかりません。 お分かりになる方がいらっしゃいましたら、是非教えて頂ければ助かります。

  • エクセルの関数でわからないことが有ります。

    こんばんは。 エクセルの関数でわからなくて困っています。 やりたいことは在庫の管理なのですが 在庫に対して発注個数をたして出庫をマイナスにしたいんです。 これだけだと普通にプラスマイナスの計算式を入れればいいのですが、 今回は在庫に注文個数を足してたり出庫をマイナスしたりして 次に注文した時に今ある在庫数にプラスしたいんです。 こういう場合の計算式はどうすればいいのでしょうか。 何が言いたいかというと 例えばA1のセルに在庫数、A2は注文個数、A3は出庫数にしたとします。 A1のセルに入っている数は注文、出庫を入力する際に前回入力の数値を保持していて 新たに注文出庫に数字を入れるとそれに乗減算して数が増減するようにしたいんです。 在庫10のときに出庫が3、注文(入庫)が5だとトータルで在庫は13になりますよね。 次回の入力の際に出庫注文の数が空白もしくは0でも在庫の13は保持していて 出庫注文に数字が入るとその13に増減されてあらたな在庫数として表示するようにしたいんです。 こういう計算式ってないでしょうか? 詳しい方いらしたら教えてください。 よろしくお願いいたします。

  • 一月毎に加算される在庫料のエクセル(マクロ)を教えてください。

    会社で在庫管理しております。入庫、出庫と一般の在庫管理はすべてエクセルで行っています。そのデータを基に請求業務も担当しています。通常であれば月末在庫の保管費として請求する金額は一律ですが、新規で取り扱うものに『入庫日一カ月は固定、二カ月を経過するごとに0.1円/kgを加算する』という業務が発生しました。 在庫日数管理そのものは入・出庫表データに入庫日・出庫日の列を入れdatedif関数で把握出来るのですが、そこから先をどう設定すればよいか分かりません。入庫日をもとにして発生する月末在庫料を設定するにはやはりマクロかな、と思うのですが検索するようなマクロしか作ったことがないのです。どなたかお力をお貸しください。

  • アクセスのクエリで引き算をした結果

    アクセスのクエリで引き算を指定しました。 「入庫数」フィールドから「出庫数」フィールドを引き、差を「在庫表」フィールドに出したいです。 「出庫数」に数字が入っている場合は、きちんと答えが表示されますが、「出庫数」に数字がない場合、空白表示になります。 「出庫数」に数字がない場合でも、そのまま数字(「入庫数」の数字)を表示したいのですが、どのように設定すればいいですか? IF関数を使ってみましたが、ダメでした。 表示の問題?なのかな??とも思えないですし・・・ いつもすみません。m(_ _)m よろしくお願いします。

  • ご教授お願い致します。

    ご教授お願い致します。 MicrosoftSQL2008で テーブルに在庫データと受払データの2種類があります。 在庫データは受払データを1行にまとめた情報で 年月で管理しています。 また、受払データはその詳細で年月日で管理しています。 質問は、この二つのテーブルをビューで1つに結合したいのですが 結合に在庫データの年月と受払データの年月日だと特定の日付のみしか 結合されません。 よって、方法を教えて頂ければ幸いです。 尚、例を下に記述します。 ■在庫データ 年月    品番 入庫数 出庫数 2010/06/01 A   3    1 2010/07/01 A 0 1 ■受払データ 伝票No. 日付  品番 入出庫区分 数量 1 2010/06/02 A 入庫    1 2 2010/06/03 A 入庫    2 3 2010/06/04 A 出庫    1 4 2010/07/02 A 出庫    1    結合は在庫データの2010/06/01だと受払データの  伝票No.が1から3まで  2010/07/01だと伝票No.4です。

  • 条件付き出荷をするのですが関数を教えてください

    2ヶ月を過ぎた在庫重量を出したいのですが、出庫した分は加算しません、どのような関数を使えば良いですか?関数初心者です宜しくお願いします。        A        B      C          1    入庫重量   入庫日   出庫日  2      15kg    9月5日 3      12kg    9月5日  10月3日 4      13kg    9月5日 5           6            在庫重量       kg       

専門家に質問してみよう