お仕事に活かす・・・基礎から学ぶエクセル講座
 
 エクセルをたのしみながら身につけられるよう、日常生活に密接したシステムなどをテーマに、そのシステム作成に必要なExcel関数や、基礎的な操作について解説しています。
Yahoo! JAPAN
登録サイト

 

お仕事に活かす・・・基礎から学ぶエクセル講座のサイトへようこそ

 
ホーム > 面白エクセル > スケジュール管理表・・・(2)

7 スケジュール管理表   年月日データを作る



 2006年から2015年までのスケジュール管理表を作りました
 振替休日を含む祭日も表示、六曜(大安・仏滅・・・)も表示しました

2.年月日データを作る

新しいブックのSheet1に次のような表を作成してください。
後々の説明上、セル番地に注意して作成してください。
この段階で、列幅や体裁はあまり考えなくてもいいですよ。




B列の数字は単に連番です。
セルB10に「1」を入力し、セルの右下隅の■(フィルハンドルと言います)をセルB40までドラッグします。




マウスボタンから手を離すと、すべてのセルに「1」がコピーされます。
範囲選択された状態で、右側に表示された「オートフィルオプション」ボタンをクリックして、「連続データ」を選ぶと、1〜31のデータを入力することができます。

  • C列に「年月日」データを作成します。

エクセルで使われる日付「年月日」の標準的な形式は
 「YYYY/MM/DD」あるいは「YY/M/D」などです。

YはYear、MはMonth、DはDayです。

2006年1月1日の場合、
  YYYYなら2006、YYなら06
  MMなら01、Mなら1
  DDなら01、Dなら1

この形式の日付を作っておくと、エクセルでは「シリアル値」を使うことができて後々都合がいいので、C列に2006年1月の日付データをこの形式で作ってみます。

  • セルD6に「1」、セルF6に「1」を入力しておきます

セルD6の「1」は「1年目」という意味です。
※後で、年はコンボボックスから選ぶように変更します。
コンボボックスで選ばれた値は、上から何番目のデータを選んだか、ということになります。
  
  • 日付の関数を使って、年月日のシリアル値を作る

セルC10をクリックしてアクティブにし、次の式を作成します。
 =DATE($D$6+2005,$F$6,B10)

DATE関数は =DATE(年,月,日)で、実際の数字を入れると
 =DATE(1+2005,1,1) となります。

この関数式での計算結果のシリアル値は「38718」で、1900年1月1日から数えた日数です。

$D$6の「$」はセル位置を移動させないための「絶対参照」のしるしです。2日〜31日まで式をコピーしますから、セルD6を固定しているわけです。

  • シリアル値を日付の形式で表示する
 38718では何月何日なのかわかりませんから、日付の形式で表示しなおします。

年月は表の上部に表示されていますから、「日」だけを表示すればいいですね。

データの表示形式はメニューバーの「書式」−「セル」から行います。

「表示形式」のタブを選び、「日付」を選んでも、適切な形式が無いので、自分で形式を作ることができる「ユーザー定義」を選びます。



種類(T)のテキストボックスに表示されている文字を消して、
「d」と入力します。
日にちだけを1桁で表示するという意味です。

サンプルの箇所に「1」と表示されていることを確認して、OKボタンをクリックします。

セルC10に「1」が表示された筈です。
※結果がうまくいかない場合は、セルC10の式を再チェック!

セルC10の右下のフィルハンドルをダブルクリックすると、セルC40まで1〜31の連番が表示されます。
※結果がうまくいかない場合は、式をチェック!
 $がきちんとついていますか?

  • 2月と小の月(30日までの月)について考える
 2006年1月のカレンダーはうまくできました。
 まだ日にちだけですけどね。

 では、2月と小の月について考えてみましょう。

 まず、セルF6に「2」を入力してみます。

 きちんと28日で終わり、翌日は1日になりました。この「1」は3月1日を表しています。

 これでもいいと言えばいいのですが、やはり、28日で終わったほうが気持ちがいいですね。

  • B列の連番を修正する
 C列の日付を修正しようかと考えたのですが、式が複雑になりそうな予感がするので、B列の連番を修正することにしましょう。
 (「予感」じゃだめだ! きちんと検証しろ!の声が聞こえる)

 どの月でも、1日から28日までは必ずあります。
 したがって、29日以降だけを修正することにします。

 出来上がった式はこうです。

【29日】セルB38
 =IF(AND(F6=2,MOD(D6+2005,4)=0),29,IF(F6<>2,29,""))

 セルF6が2(2月)で、なおかつ、セルD6の値(西暦年)を4で割った余りが0すなわち割り切れれば、29と表示し、そうじゃない場合、2月でなければ、29と表示、それ以外は空白とする、という式です。

ことばで書くのがむずかしいですね。
じっくり睨んで、理解してください。

【30日】セルB39
 =IF(F6<>2,30,"")

これは簡単、2月以外なら30を表示し、2月なら空白とする、という意味です。

【31日】セルB40
 =IF(OR(F6=2,F6=4,F6=6,F6=9,F6=11),"",31)

 2,4,6,9,10月なら空白、それ以外は31を表示する

セルD6とセルF6にさまざまな年(1〜10)、月を入力して結果を確かめてみます。どうです、正しく表示されましたか。

特に 3(2008年)、7(2012年)などは閏年です。29日まで表示されていますね。

※(余談)
西暦2100、2200、2300年は4で割り切れる年だけど、閏年ではありません。だけど2400年は閏年です。
こんなことを調べると、おもしろいですよ。このサイトでは割愛。

※もうひとつ、後で気がついたのですが、エクセルは閏年をきちんと判断します。ですから、もう少し簡単な式で済みますね。

  • 問題発生! C列のエラー表示
 29日以降、B列の値が空白の場合、エラー表示になってしまいます。

 これを避けるため、C列の29日以降の式を次のように修正しました。
【セルC38の式】
 =IF(B38="","",DATE($D$6+2005,$F$6,B38)

 エラーが発生するのはDATE関数の「日」の部分が空白となるためです。
 B列のデータが空白の場合は空白とし、空白でないでない場合は、計算結果を表示する、という式にしました。

 この式をセルC40までコピーしてください。

 さあ、やっと、日にちの表示が完成です。

 次は曜日の表示です。

前のステップにもどるスケジュール管理表トップに戻る次のステップに進む



- PR -

NTTのアフィリエイト


介護・医療・福祉の資格
無料資料請求
















アクセス増加と広告収入



このページのTOPへ   ホーム > 面白エクセル > スケジュール管理表・・・(2)
 2009.9 Restart
 Copyright お仕事に活かす・・・基礎から学ぶエクセル講座 All rights reserved