アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (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列「●」の方が都合がいいのでしたらまたコメント下さい。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/05/30 22:10

単純なものですが…



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,"●","")
・日付と最終列の間の行を非表示にする


ゴチャゴチャしていますが、とりあえずはこんな感じでしょうか。
まずは試してみて下さい。

この回答への補足

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列に次の期間 に●が
表示されてしまいます。  いかがでしょうか?
どうぞよろしくお願いいたします。

補足日時:2006/05/28 00:33
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/05/27 23:41

質問されている事項に関して、エクセルで事項することは可能です。


しかしながら、具体的な表の書式がわからないと、望んでいる回答を得られにくいと思います。
A列に何が、B列に何が書いてあって…とか、
カレンダー形式といっても、7日ごとに改行のものか、1行で表しているものなのか。

この回答への補足

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

補足日時:2006/05/26 17:52
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!