[[20030329151702]] 『滞在日数を目で見て分るように表示したい』(おぐ) >>BOT

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『滞在日数を目で見て分るように表示したい』(おぐ)

滞在日数を目で見て分るように表示するいい方法を教えてください。

  A         B      C    D    E    F   G    H   ....

 名前  入国日    帰国日   1月  2月  3月  4月 5月 ....

ジョン 2003/1/10 2003/4/9 ○  ○ ○ ○

マイク 2003/2/25 2003/3/3 ○ ○

ニッキ 2003/4/15 2003/5/20 ○ ○

入国日と帰国日を入力すると滞在月に何か印をつけたり、矢印で線が引いてあったり、

セルの色が変わったりと、目で見て分るような表示をさせたいです。


 A列に名前、B列に来日日付け、C列に帰国日付、D列からO列まで

 グラフィック表示領域とします。B列とC列は表示形式が日付とします。

 DからO列まで、縦は必要行数を選択して下さい。(D列が1月、

 O列が12月とします。後で表上部に列見出しとして月名を書き込んで

 下さい。)

 上のメニューバーから、書式⇒条件付書式を選びます。

 左端のプルダウンをクリックして、[数式] を選んで下さい。

 右の長い入力欄に、

 =(MONTH($B2)<=COLUMN()-3)*(MONTH($C2)>=COLUMN()-3)

 と入れて下さい。($B2 や $C2 は現在2行目にいると仮定しています。)

 書式(F)ボタンをクリック。

 お好みですが、例えば、パターンタブを選び、赤を選ぶ。

 OKをクリック。もう一度OKをクリック。

 どうでしょうか。なお条件付書式は書式ですから、コピーは、刷毛マーク

 とかで行なう、書式コピーを使って下さい。

 条件付書式がややこしければ、条件付書式は止めて、かわりに、

 D列〜O列に、

 =IF((MONTH($B2)<=COLUMN()-3)*(MONTH($C2)>=COLUMN()-3),"■","")

 という関数を書き込んでもいいです。セルのフォント色を赤とかにすれば、これでも

 結構いけるかも…。■でなくても、他のマークでも、もちろんいいです。

 (通りすがりの者)


 類似問題の回答例で参考になるでしょうか?

『工程表を作りたい』(大小心気) [[20020828132928]]

 (シニア)


 シニアさんが上に上げておられる過去解答も是非見て下さい。ここでは、単にシニア

 さんの解答ばかりでなく、ちょっとした討論も行なわれて、すごく参考になると

 思います。2002082... の長い番号をクリックすればすぐ見られます。(通りすがりの者)


通りすがりの者さんとシニアさんありがとうございました。

やってみたらできました。勉強になりました。

そこで、もうひとつ質問ですが、

年が変わった時(例えば入国日2003/12/5、帰国日2004/1/15)はどう応用すればいいのですか?

シニアさんのD1 D2 が 1/1 1/2…と365日のときはいいのですが、

月の場合がうまくいきません。

宜しくお願いします。(おぐ)


 それでは1案として、

    __A_____B____C___D__E___

 1  入国年月日 出国年月日_2003/1 2003/2 2003/3......

 2  2003/8/5    2004/2/20    ---    ---    ---

 3  ....

 表内に数式を入れる場合: =IF(($A2<=C$1)*($B2>=C$1),"★","")

 条件付書式の場合:   =($A2<=C$1)*($B2>=C$1)

 とすればいいのでは? 今回は表最上行に「年月」を書いてその記載内容そのものを

 使っています。条件付書式の場合も同じです。「年月」の表記法は、セルの書式設定の

 表示形式タブをクリックで、いろいろ選べます。入力は 2003/1 とかでいいでしょう。

 しかしこんなふうにしても行はどこかで終わらなければなりません。年月は果てしなく

 続くが行は有限...。なんか人生のような空しさが....。

 ちょっと説明不足かな....?

 (通りすがりの者)


 C1に日付入力し、コピーすれば、年も連続日付になります。(数式バーの表示で確認)

年内に来年の出国日を入力するときは年月日を入力しなければなりません。

過去ログの再掲載

    A      B      C     D     E     F     G     H     I    J    K    L

1 入国日 出国日 12/26 12/27 12/28 12/29 12/30 12/31 1/1 1/2 1/3 1/4

212月28日 1月3日 ==========================================

 C1に12/26と入力すると12月26日と表示されます。

右クリックメニューの「セルの書式設定」【ユーザー定義】で m/d とします。

C1を列コピーします。

A2,B2に12/28,2004/1/3と入力します。12月28日、1月3日と表示れます。

C2に =IF(AND($A2<=C$1,$B2>=C$1),REPT("=",8),"") この式をコピーして、表示したいセルに

コピーすれば,上の表のように表示されます。

 (シニア)


丁寧に教えていただいてありがとうございます。

通りすがりの者さんの方法でやってみたのですが、

    A         B        C      D      E    ...

 入国日   帰国日  2003/1 2003/2 2003/3 ...

2003/1/10 2003/3/20       ●   ●

の場合、2月と3月に●印が付きますが、1月には付きません。

入国日が2003/1/1のときのみ1月に●印が付きます。

いろいろやってみましたが、どうもうまくいきません。

宜しくお願いします。

(おぐ)


 条件が($A2<=C$1)ですから、A2が2003/1/10でC1が2003/1/1で条件を満たしていません。

 表内に数式を入れる場合: =IF((MONTH($A2)<=MONTH(C$1))*(MONTH($B2)>=MONTH(C$1)),"●","")

に変更すれば、1月にも●印が付く筈です。

 (シニア)


シニアさん ありがとうございます。

シニアさんの教えてくださった数式を入力してみると、

確かに2003/1月に●印は付くのですが、2004/1月 2月 3月にも

●印が付いてしまうんです。

何かいい方法はないでしょうか?

(おぐ)


 年内の案内ですので、日付から月を抽出した条件式にしました。

当然月だけの条件ですから翌年の該当月にも適用されてしまいます。

年度毎の表を作成されたら如何ですか?

どうしても表示させたいのであれば、年の条件式を追加すればよいだけです。

 =IF((YEAR($A2)>=YEAR(C$1))*(YEAR($B2)>=YEAR(C$1))*(MONTH($A2)<=MONTH(C$1))*(MONTH($B2)>=MONTH(C$1)),"●","")

 (シニア)


 ほんとですね。大変失礼しました。やはり年と月だけで、日をどけてやらなくっちゃ

 いけなかったのに、甘くみてしまった。しかしそうすると数式が長くなってしまう

 ので、一案を講じました。入国日付が A2 に出国が B2 に、表見出の年月が C1 から

 右へ並んでいて、いまカーソルが、C2 にある としましょう。数式に名前を定義

 します。

 「挿入」⇒「名前」⇒「定義」で上の小さいほうの窓に、COME と入れ、最下の小窓

 に =YEAR($A2)*100+MONTH($A2) といれ、追加ボタンをクリック。同様に、上の小窓

 に GONE 最下の小窓に、=YEAR($B2)*100+MONTH($B2) 追加ボタンをクリック。

 もうひとつだけ。上の小窓に LABEL 最下の小窓に、=YEAR(C$1)*100+MONTH(C$1) 追加

 ボタンをクリック。($の位置に注意!)

 こうすると、C2からの数式入力域には、=IF((COME<=LABEL)*(GONE>=LABEL),"★","")

 と入れ、これを全域にコピーすることになります。COMEは入国、GONEは出国、

 LABEL は上の表見出しの値です。数式に名前を定義すると分かり易くなります。

 長くなりすぎたので、条件付書式の件は省略させて頂きます。ちゃんとテストしないで

 出して、失礼しました。お許し下さい。

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.