• ベストアンサー

期間日付表をカレンダーに落とすには

施設の予約管理表を作成しています。 シート1に施設利用期間が入力されている表があります     A    B    C    D    1   名前   部屋番  期間始  期間終 2   太郎   1号   2/1   2/5  3   花子   2号   2/4   2/7 シート2にカレンダーで部屋別に利用状況がわかる様な表を作成したいです。利用している日のセルには利用者の名前を表示したいです。カレンダーはタテでお願いします。部屋数は35部屋、1年で管理したいです。 よろしくお願い致します。

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

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.5

>してみるんですがどこが間違っているのか表示されません(;一_一) ひとまず、私の画像と全く同じレイアウトで同じ数式をそのまま入力してみてください。 >条件付き書式にはどの式を入力したらよろしいでしょうか? 条件付き書式の数式を忘れていました。 =SUMPRODUCT((部屋番=B$1)*(開始日<=$A2)*(終了日>=$A2)) レイアウトが違う場合は適宜参照セルを変更してください。

supercar02
質問者

補足

ありがとうございます、作成できました。 データの名前の範囲を広げたいのですが、一度決めたデータ範囲の名前の変更は出来ますか? もしくは削除して再度名前の登録はできますか?

その他の回答 (5)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.6

>データの名前の範囲を広げたいのですが、一度決めたデータ範囲の名前の変更は出来ますか? 「挿入」「名前」「定義」(2007なら「数式」「名前の定義」)で参照範囲をデータ追加に対応できるように少し大きめに変更してください。 ちなみに、数式を使った名前定義を利用すれば、データの増減に応じて自動的に範囲を変更することもできます(A列の「名前」データの例)。 =OFFSET($A$1,1,0,COUNTA($A$A),1)

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

例えば1号に2月6日から2月8日まで太郎とは別の客が泊まる場合のことも考慮すると結構難しいですね。次のようにしてはどうでしょう。 シート1のE2セルには次の式を入力して下方にオートフィルドラッグします。 =B2&C2 シート2ではA3セルから下方に日付を連続して表示させるようにします。 B2セルから横方向のセルには1号、2号、3号などとシート1で使われたと同じ書式の部屋番号を入力します。 B3セルには次の式を入力して右横方向にオートフィルドラッグしたのちに下方向にもオートフィルドラッグします。 =IF(SUMPRODUCT((Sheet1!$B$2:$B$100=B$2)*(Sheet1!$C$2:$C$100<=$A3)*(Sheet1!$D$2:$D$100>=$A3))>0,IF(NOT(ISERROR(INDEX(Sheet1!$A:$A,MATCH(B$2&$A3,Sheet1!$E:$E,0)))),INDEX(Sheet1!$A:$A,MATCH(B$2&$A3,Sheet1!$E:$E,0)),IF(AND(ROW(A1)>1,B2<>""),B2,"")),"") これで利用者の名前が正しく表示されます。

supercar02
質問者

補足

ありがとうございます。 作ることが出来ましたが期間が1ヶ月以上の場合カレンダーの日付を変更してもb3セル以降に部屋番号が出てきます シート2のA3セルからは別セルの年度、月入力から自動でひづけが出るようにしています。 アドバイスお願いいたします

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

参考までに補足します。 私の提示した配列数式で対応する方法は、数式入力するデータが多いと動きが重くなります。 まず、条件付き書式だけで問題なく表示できるか調べてみて、後で名前を表示する数式を入力してみて下さい。 これで動きが重くなり実用に堪えないと思われたら、計算方法を「手動」にして、カレンダーを表示したいときだけF9キーを押して再計算させるような手順にしたほうがよいかもしれません。

supercar02
質問者

補足

条件付き書式にはどの式を入力したらよろしいでしょうか?

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.2

元データのA2セル以下のデータ範囲(大きめに設定しておく)に「名前」、B2セル以下に「部屋番」、C2セル以下に「開始日」D2セル以下に「終了日」と名前を付けておきます。 カレンダーを表示したいシートのA2セルから下方向に日付をオートフィル入力しておき、B1セルから右に部屋番を入力しておきます。 B2セルに以下の数式を入力し、Ctrl+Shift+Enterで確定し、右方向および下方向にオートフィルします(これで日付の先頭に名前が表示されます)。 =IF(ISNA(MATCH($A2&B$1,開始日&部屋番,0)),"",INDEX(名前,MATCH($A2&B$1,開始日&部屋番,0))) B2セルから数式入力セル範囲を選択して、「書式」「条件付き書式」で「数式が」にして以下の式を入力し、「書式」ボタンをクリックし、パターンタブでたとえば赤を選択しすれば、該当期間のセルが赤く帯状になります。 以上はエクセル2003までの操作を提示しましたが、2007でも同様な操作になります。

supercar02
質問者

補足

ありがとうございます。 してみるんですがどこが間違っているのか表示されません(;一_一)

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

ピボットテーブルを使用してはどうでしょうか。

supercar02
質問者

補足

自動で更新表示されるようにしたいのです

関連するQ&A