- ベストアンサー
エクセル倉庫の在庫の場所を表示したいと思います
- みんなの回答 (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)))
その他の回答 (1)
- KURUMITO
- ベストアンサー率42% (1835/4283)
マクロを使わないでも関数で対応することができます。 例えばお示しの表について元の表がシート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関数を使うことがよいでしょう。参考にしてください。
お礼
素早い回答ありがとうございます。COUNTIFを使うとは思いもしませんでした。 本当に参考になります。もっと勉強したくなりました。
補足
KURUMITO様、さっそくの回答ありがとうございます。こんなに簡単にできるのですね。感動しました。 VBAでと考えたのは、商品は出入りするので、同じ場所でも、日によって置いてある商品が入れ替わることがあるからなのです。 つまりは、上書きしなければならなくなるのです。 その際の処理を、日付に応じてできるようにして、過去の倉庫も再現できるようにしたいと思っています。 その場合は、どうしたらいいのでしょうか?
お礼
KURUMITO様 こちらこそ、素人の都合のいい質問に繰り返しお答えいただきありがとうございます。 例示された関数を眺めていて、「考え方・発想」というものがわかってきました。本当に参考になります。 関数にはずいぶんといろいろな物があるようですが、リファレンスを読んでいるだけでは、なかなか実際の使用への応用には結びつかなくて困ります(^^; たとえばMATCH関数の引数に範囲を指定できると解説しているものは私の買った本や、web上にはまだ見つけていません。 おくが深いですね。 この考え方ができれば、VBAもできそうですね。 重ねて感謝申し上げます。