• ベストアンサー

エクセル倉庫の在庫の場所を表示したいと思います

はじめまして。よろしくお願いします。 ランダムに入力した帳票に、倉庫内の場所を別シートのセル番地で入力する欄を作り、 別シートには、倉庫内の「場所」を地図のように表示したいと思っています。 VLOOKUPやDGETなど、関数も試してみましたがダメで、VBAで作成しようと思います。 どうすればいいでしょうか。 どこにあるか、取りに行きやすくしたいのです。 また、日付で検索して、過去にどこにあったかも検索しようと思いますが、それはまた別の機会に。 最近関数やVBAの入門書を買ったほとんど初心者です。 よろしくお願いします。

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

回答No1です。追加のご質問に気が付くのが遅れてしまいましてすみません。 過去の日付での商品の表示ですがシート2のA1セルに例えば2012/12/2のように入力するとして、その時点での商品の在庫表示をするのでしたらシート2のC2セルには次の式を入力してその後は回答1と同じようにドラッグコピーすればよいでしょう。 =IF(COUNTIF(Sheet1!$E$1:INDIRECT("Sheet1!E"&IF($A$1<MIN(Sheet1!$A:$A),1,MATCH($A$1,Sheet1!$A:$A,1))),ADDRESS(ROW(),COLUMN(),4))=0,"",INDEX(Sheet1!$B:$B,MATCH(ADDRESS(ROW(),COLUMN(),4),Sheet1!$E:$E,0)))

acter_k
質問者

お礼

KURUMITO様 こちらこそ、素人の都合のいい質問に繰り返しお答えいただきありがとうございます。 例示された関数を眺めていて、「考え方・発想」というものがわかってきました。本当に参考になります。 関数にはずいぶんといろいろな物があるようですが、リファレンスを読んでいるだけでは、なかなか実際の使用への応用には結びつかなくて困ります(^^; たとえばMATCH関数の引数に範囲を指定できると解説しているものは私の買った本や、web上にはまだ見つけていません。 おくが深いですね。 この考え方ができれば、VBAもできそうですね。 重ねて感謝申し上げます。

その他の回答 (1)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

マクロを使わないでも関数で対応することができます。 例えばお示しの表について元の表がシート1に有るとして場所を示す図面に相当するものがシート2にあるとします。 参考のためにお示しのケースで赤の線で示しているケースについて次のようにすればよいでしょう。 シート2のC2セルには次の式を入力して右横方向にドラッグコピーしたのちに下方にもドラッグコピーします。 =IF(COUNTIF(Sheet1!$E:$E,ADDRESS(ROW(),COLUMN(),4))=0,"",INDEX(Sheet1!$B:$B,MATCH(ADDRESS(ROW(),COLUMN(),4),Sheet1!$E:$E,0))) このようにADDRESS関数を使うことがよいでしょう。参考にしてください。

acter_k
質問者

お礼

素早い回答ありがとうございます。COUNTIFを使うとは思いもしませんでした。 本当に参考になります。もっと勉強したくなりました。

acter_k
質問者

補足

KURUMITO様、さっそくの回答ありがとうございます。こんなに簡単にできるのですね。感動しました。 VBAでと考えたのは、商品は出入りするので、同じ場所でも、日によって置いてある商品が入れ替わることがあるからなのです。 つまりは、上書きしなければならなくなるのです。 その際の処理を、日付に応じてできるようにして、過去の倉庫も再現できるようにしたいと思っています。 その場合は、どうしたらいいのでしょうか?