• ベストアンサー

発注履歴みたいなものの作成

発注履歴みたいなものの作成 こんばんわ、よろしくお願いします。 発注履歴のシートには 品番、商品名、発注日、発注数、入庫日、入庫数、入庫日2、入庫数2・・・、注残 とあり、現在は全てコピペで行っていたのですが別シートに商品一覧を作り、VLOOKUPで発注リストの方に商品番号を入力すれば商品名が出るようにしました。 後は、手で入力となるのですが、別シートにて同じように品番を入力すると商品名が表示され発注数、発注日は手で入力、それと以前発注した物が5件程見れるようにしたいのですがここからさっぱり進まなく相談させて頂きました。 画像を添付していますので、ご覧頂けますか?

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

No.1です! たびたびごめんなさい。 データ量がかなり多いということなので、前回の配列数式だと コンピュータがフリーズしたのか?というくらい負担がかかると思います。 すでにNo.3さんの方法でご思案中だということなので、余計なお世話になるかもしれませんが、 作業用の列を設ける方法を載せておきます。 ↓の画像でSheet2のH列を作業列としています。 H2セルに =IF(OR(Sheet1!$B$1="",A2<>Sheet1!$B$1),"",ROW(A1)) という数式を入れオートフィルでずぃ~~~!っと下へコピーします。 データがなくても構いませんので、しっかり下までコピーしておきます。 そして、Sheet1のA6セルに =IF($B$1="","",INDEX(Sheet2!C$2:C$10000,LARGE(Sheet2!$H$2:$H$10000,ROW(A1)))) という数式を入れ列方向と行方向(5行分)にオートフィルでコピーすると 最近の5件のデータが表示されると思います。 尚、日付は昇順になっているという前提ですので もしバラバラだと数式を少し訂正しなくてはなりません。 そして、上記の数式はSheet2の10000行目まで対応できるようにしていますが 数式内の「10000」の部分を変更すればもっと多くのデータに対応出来ます。 以上、長々と書きましたが、 お役に立てば幸いです。m(__)m

tomohiro414
質問者

お礼

さっそくの回答、アドバイスありがとうございます! No.3さんの方法とtom04様の方法と実は両方使ってます(^^ゞ 表示に時間がかかるので、明日にでも今回ご指導頂いた方法試してみます!! 本当に皆さんすごいですね。 私も早くエクセルが使いこなせるように頑張りたいと思いますm(__)m

その他の回答 (3)

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.3

一回の発注に対して、分納が発生する場合の注文残の管理を行いたいと いた具合でしょか? 基本的には、発注履歴シート 発注書ID 品番、商品名、発注日、発注数、注残 入荷履歴シートには 発注書ID、入庫日、入庫数、品番、商品名、発注日、発注数 とします。 発注シートの 注残 は SUMIF関数で入荷履歴より自動で計算表示できます。 商品名或いは品番は、商品一覧からVLOOKUP関数で得られますので 入力工程は、発注書ID、品番、発注数、発注日の4項目でしょうか。 入荷シートの 品番より右は全て 発注のシートよりVLOOKUP関数で表示できます。(必要かどうかは、判断してください) つまり、発注書ID、入庫日、入庫数の3項目になりますが、 発注書ID、入庫数も入力規則の応用で誤入力防止もできます。 分納が、何回に分かれて納品されても大丈夫です。 別シートに商品一覧があるので 品番、商品名、発注総数、入荷総数、発注残数 として 発注総数、入荷総数はSUMIF関数を入れてけば、注残の一覧表になります。 この3つのシート構成にしておけば、 ひとつの発注ごとの入荷履歴、ひとつの部品ごとの入荷履歴の一覧表も 簡単に作成できます。 これらは、経験が必要ですが、最初のデータシートの構成で入力の作業も集計の作業も大きく違ってくる一例です。

tomohiro414
質問者

お礼

回答ありがとうございます。 現在、教えて頂いたシート構成で頑張っています。 ありがとうございました!!!いつも構成の箇所で躓きますので助かりました。

  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.2

過去の発注情報はどのように保管されているのでしょうか?

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 外していたらごめんなさい。 ↓の画像のようにSheet2が商品一覧Sheetで、日付順にデータが入力してあるものとします。 Sheet1のA6セルに =IF(OR($B$1="",COUNTIF(Sheet2!$A$2:$A$100,$B$1)<ROW(A1)),"",INDEX(Sheet2!C$2:C$100,LARGE(IF(Sheet2!$A$2:$A$100=$B$1,ROW($A$1:$A$99)),ROW(A1)))) これは配列数式になってしまいますので、 この画面からコピー&ペーストしただけではエラーになると思います。 数式をA6セルに貼り付け後、F2キーを押す、又はA6セルでダブルクリック、又は数式バー内で一度クリックします。 編集可能になりますので、Shift+Ctrl+Enterキーで確定してください。 数式の前後に{ }マークが入り配列数式になります。 これを列方向と、行方向に5行ほどオートフィルでコピーすると 最新の過去5件が表示されると思います。 尚、数式は100行目まで対応できるようにしていますが、 データ量によって範囲指定の領域はアレンジしてください。 しかし、データ量が多すぎる場合、配列数式はコンピュータにかなりの負担をかけますので あまりおススメできる方法ではありません。 以上、長々と書きましたが 参考になれば幸いです。 的外れなら読み流してくださいね。m(__)m

tomohiro414
質問者

お礼

こんにちわ、早速回答ありがとうございます。 残念な事にすでに9000行を超えてますので、無理っぽいですね・・・。 ありがとうございました。

関連するQ&A