• 締切済み

エクセルで、日付の期間表をカレンダー形式におとしたい

ある場所の使用予約期間の エクセルで作った日付で期間を表した表、 たとえば5月23日~6月2日のようなもの (日付は1セルごと)を カレンダー形式の見やすい表に変えたいのです。 カレンダーでその予約期間に色が付くとか●が入るとか できないでしょうか? もちろん上記の日付を修正した場合はカレンダーのほうも 自動的に変更されるということにしたいです。 どうかご教示お願いいたします。

みんなの回答

  • hirumin
  • ベストアンサー率29% (705/2376)
回答No.3

複数ある期間で、●を付けるのはB列のみと言うことですよね。 No.2で書いたものの中の > ※同一項目の予定で複数の期間があるという場合 で書いた物が、その対応案だったのですが、わかりにくかったかな。 複数期間分、例えば5個あるとしますよね。 「期間記入用」 ------------ 1~5行にその期間を入力。 「カレンダー(縦)」 ------------ A列には日付を入れます。 B列を含んで期間の個数と同じ分の列に以下の式を入れます。 [B1]=IF(AND(INDIRECT("Sheet1!A"&COLUMN()-1)<=$A5,INDIRECT("Sheet1!C"&COLUMN()-1)>=$A5),1,"") [B1]に入力(コピーして貼り付け)を終えましたら、そのセルを選択し右下の■(フィルハンドル)をダブルクリックします。 これで、A列に日付が記入されていれば、最下行まで一気に複写されます。 B列を選択(セル番地の「B」をクリック)します。 この時、B列が反転した際、[B1]の右上に■がでますので、それをドラッグして右へ4列分(Fまで)移動させます。(B~F列で計5列[=期間の個数]) E列には以下の式を入れます。 [E1]=IF(SUM(INDIRECT(ADDRESS(ROW(),2)&":"&ADDRESS(ROW(),COLUMN()-1)))>0,"●","") [E1]に入力(コピーして貼り付け)を終えましたら、そのセルを選択し右下の■(フィルハンドル)をダブルクリックします。 最後に、B~F列を選択して右クリック、「非表示」とします。 期間が増える場合は以下の方法で列を増やしてください。 B列を選択 右クリック「コピー」 そのままB列上で右クリック「コピーしたセルの挿入」」 最終列はいじらなくてOKです。 どういう事をやっているかというと… dreamlikeさんが今作ったシートがありますよね。 そこで期間内が「●」表示されているところを「1」に置き換えるんです。 最終列 で、1日毎、つまり1列に記載された数字を足して、「0」ならば予定無し、「1以上」ならば予定ありとして「●」を表示します。 「1」を表示させた列は、表示上不要なものですので非表示にして隠します。 B列に「●」は出していませんが、最終的に日付の隣に「●」が来るようになります。 見た目ではそうでも、やっぱりB列「●」の方が都合がいいのでしたらまたコメント下さい。

dreamlike
質問者

お礼

hiruminさんへ ようやく理想の形になりつつあります! 本当にご丁寧に有難うございました。 いろいろな人に「それは無理だ」と言われたので あきらめていました。 もっと関数勉強してみます。

  • hirumin
  • ベストアンサー率29% (705/2376)
回答No.2

単純なものですが… Sheet1(期間記入用) ---- [A1]=2006/5/23 ←表示形式は任意で設定して下さい(「5月23日」でも可) [C1]=2006/6/2 Sheet2(カレンダー横) ---- [A1],[B1],… = 2006/5/1,2006/5/2,…必要分まで ←開始日、表示形式は任意で [A2]=IF(AND(Sheet1!$A$1<=A1,Sheet1!$C$1>=A1),"●","") [B2][C2]…には[A2]をコピー これで、期間内は「●」が表示されます。 Sheet1で、複数の項目で期間があるのでしたら、 [A2]=IF(AND(INDIRECT("Sheet1!A"&ROW()-1)<=A$1,INDIRECT("Sheet1!C"&ROW()-1)>=A$1),"●","") と置き換えて下さい。 ※同一項目の予定で複数の期間があるという場合 ・上記式の「"●"」を「1」(""も不要)にしてください ・最終行に以下の式を入れB以降にもコピー   [Ax]=IF(SUM(INDIRECT(ADDRESS(2,COLUMN())&":"&ADDRESS(ROW()-1,COLUMN())))>0,"●","") ・日付と最終行の間の行を非表示にする なお、1行目を日付にした場合、256日分しか記載できません。 Sheet3(カレンダー縦) ---- [A1],[A2],… = 2006/5/1,2006/5/2,…必要分まで ←開始日、表示形式は任意で [B1]=IF(AND(INDIRECT("Sheet1!A"&COLUMN()-1)<=$A1,INDIRECT("Sheet1!C"&COLUMN()-1)>=$A1),"●","") [B2]以降にコピー、 複数期間があるなら、C列以降も同様にコピー ※同一項目の予定で複数の期間があるという場合 ・上記式の「"●"」を「1」(""も不要)にしてください ・最終列に以下の式を入れ以降コピー   [x1]=IF(SUM(INDIRECT(ADDRESS(ROW(),2)&":"&ADDRESS(ROW(),COLUMN()-1)))>0,"●","") ・日付と最終列の間の行を非表示にする ゴチャゴチャしていますが、とりあえずはこんな感じでしょうか。 まずは試してみて下さい。

dreamlike
質問者

お礼

ありがとうございました。 早速やってみます。 お手数おかけいたしました。

dreamlike
質問者

補足

hiruminさん やってみました。私には魔法のようです!! 私の説明不足で申し訳ありませんが、 A1に5/23でB列にはすべて「~」、C1に6/2 A2には次の開始日たとえば6/4 C2に終了日6/7 A3にその次の開始日6/9 C3に6/10・・・・となっています。 それをシ-ト2のカレンダー(縦バージョン)のA列には毎日の日付で B列に上記の使用期間に●をつけたいのです。 私の理解不足ですが、教えていただいたのだと B列に最初の期間 C列に次の期間 D列に次の期間 に●が 表示されてしまいます。  いかがでしょうか? どうぞよろしくお願いいたします。

  • hirumin
  • ベストアンサー率29% (705/2376)
回答No.1

質問されている事項に関して、エクセルで事項することは可能です。 しかしながら、具体的な表の書式がわからないと、望んでいる回答を得られにくいと思います。 A列に何が、B列に何が書いてあって…とか、 カレンダー形式といっても、7日ごとに改行のものか、1行で表しているものなのか。

dreamlike
質問者

補足

ご回答ありがとうございます! A列に開始の日 B列に~という文字 C列に終了の日です。 カレンダー形式は1ヶ月毎でも1行でバーッと3/31まで表示 されていてもかまいません。(必要な範囲は1年分です) マニュアルなどを参考にしましたが解りませんでした。 どうぞよろしくお願い致します。

関連するQ&A

専門家に質問してみよう