• ベストアンサー

期間の入力の仕方

シート1に名前と期間の始めと終了の日付が入力してあります シート2にカレンダーを作成しており期間開始~終了までの間に名前を表示させたいです。今までは期間が1日だった為作業列を作りVlook関数で作成していました。開始日や終了日は表示できますが間の日付が出来ません 解り難い質問で申し訳ございません。何かいい方法があれば教えていただければ助かります。 シート1      名前    期間始め  期間終わり 2    太郎    2/1     2/5  

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

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

No.1・2です! 何度もごめんなさい。 前回の方法は同日に同施設を複数の人が利用した場合は 正確なデータを表示できません。 限定条件として、一施設に一人という条件になります。 どうも何度も失礼しました。m(__)m

その他の回答 (2)

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

No.1です! たびたびお邪魔します。 結構条件が重なると難しくなりますね! ↓の画像のような感じになれば良いのですかね? まず、Sheet2にシリアル値で日付を入れる方法ですが、 B3セルに =IF(MONTH(DATE($A$1,$C$1,ROW(A1)))=$C$1,DATE($A$1,$C$1,ROW(A1)),"") という数式を入れ、セルの書式設定の表示形式は ユーザー定義から d としておきます。 これをオートフィルで31日(B33セル)までコピーします。 これでA1・C1セルに年・月を入力すると月末まで表示されます。 大の月・小の月も対応できるはずです。 そして、Sheet1に作業用の列(表)を設けています。 Sheet1のE2セルに =IF($D2-$C2+1<COLUMN(A1),"",$B2&$C2+COLUMN(A1)-1) という数式を入れ、列方向と行方向にオートフィルでコピーします。 今回はSheet2の数式の関係で、10列(N列まで)コピーしています。 行方向は100行まで対応できる数式にしていますので、そのくらいまでコピーしても構いません。 最後にSheet2のC3セルに =IF(COUNTIF(Sheet1!$E$2:$N$100,C$2&$B3),INDEX(Sheet1!$A$2:$A$100,MAX(INDEX((Sheet1!$E$2:$N$100=C$2&$B3)*ROW($A$1:$A$99),))),"") という数式を入れ、列方向と行方向(月末まで)オートフィルでコピーすると 画像のような感じになります。 この画面から数式をそのままコピー&ペーストしてみてください。 以上、かなり無理矢理の方法になります。 参考になれば幸いですが 今回も外していたらごめんなさいね。m(__)m

supercar02
質問者

補足

いえいえ、ばっちりマトを得てます。本当にいつもありがとうございます。しかも画像付きでかなりわかりやすいです。とりあえず今ある表に組み込んでみます。結果報告いたします。

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

こんにちは! 一例です。 ↓の画像でSheet1のデータをSheet2に表示させるようにしてみました。 尚、日付は全てシリアル値が入っているものとします。 Sheet2のB4セルに =IF($A4="","",IF(AND(VLOOKUP($A4,Sheet1!$A$2:$C$100,2,0)<=B$3,VLOOKUP($A4,Sheet1!$A$2:$C$100,3,0)>=B$3),$A4,"")) という数式を入れ、オートフィルで列方向と行方向にコピーすると 画像のような感じになります。 数式はSheet1の100行目まで対応できるようにしています。 以上、参考になれば良いのですが 他に良い方法があれば読み流してくださいね。m(__)m

supercar02
質問者

補足

いつもありがとうございます。 早い回答助かっています。 今回の作成理由は施設の利用状況を管理したいです。シート1の名前と期間始の間にA棟等の施設名を追加し作成し、 シート2には施設の日別で誰が利用しているか知りたいです。画像の名前欄Aを施設名に変え、日付に入っている利用者名はそのままで大丈夫です。 カレンダーの日付欄(シート2のB3,B4,B5…)にはA1とC1の入力から日付を自動で表示させたいです。 よろしくお願いします。

関連するQ&A