まりふのひと

Excel演習問題集Lesson36「カレンダー」の補完

 よくわかる Microsoft Office Excel演習問題集 の Lesson36「カレンダー」、標準解答集は具体的な手順しか載っていないので、「目的」等を補完してみた。

§1.入力

■ 入力
  1. 西暦、月、曜日を入力
    • 西暦は“2010”,月は“3”としよう。(カレンダーなので前向きに‥‥)
  2. 曜日ナンバーを入力
    • テキスト47ページの図のように、セルB4に“曜日ナンバー”、5行目に1〜7 までの番号を入力する。これは「曜日」のコードに相当する。
    • 4,5行目は、最終的には「非表示」にする。(テキスト46ページの図は、3行目の次は6となっている)
■ 1週目の日付
※ 関数の説明(ヘルプより)
  • IF(論理式,真の場合,偽の場合)
    • 「論理式」とは条件式のこと。
    • 「真の場合」とは、条件式に一致した時に行うことを記述する。
    • 「偽の場合」とは、条件式に一致しなかった時に行うことを記述する。
  • WEEKDAY(シリアル値,種類)
    • 「シリアル値」とは、1900年1月1日からの経過日数。2010/03/01 は 40,238となる。
    • 「種類」を省略すると、1 (日曜) 〜 7 (土曜) となる。
  • DATE(,,)
     例えば、
    • “=date(2010,2,29)” と入力すると、2010/3/1 となる。
    • “=date(2010,3,0)” と入力すると、2010/2/28 となる。
    • “=date(2012,3,0)” と入力すると、2012/2/29 となる。
  1. セルB8に次を入力する。(解答集rの下の※)
    =IF(B5 >= WEEKDAY(DATE(B2,B3,1)), B5 - WEEKDAY(DATE(B2,B3,1)) +1, "")
    • セルB2には 2010、セルB3 には 3 が入っているとすれば、次のようになる。
       =IF(B5 >= WEEKDAY("2010/3/1"), B5 - WEEKDAY("2010/3/1") + 1, "")
    • セルB5は 1、2010/3/1 は月曜日である Weekday は 2 となり‥‥
        =IF(1 >= 2, 1 - 2 + 1, "")
      即ち、IF 条件式は 偽 となり、セルB5は "" (空)となる。
  2. セルC8にセルB8の式をコピーすると
    =IF(C5 >= WEEKDAY(DATE(C2,C3,1)), C5 - WEEKDAY(DATE(C2,C3,1)) +1, "")
    となり、#Value! これは、値がおかしいため。正しくは、
    =IF(C5 >= WEEKDAY(DATE(B2,B3,1)), C5 - WEEKDAY(DATE(B2,B3,1)) +1, "")
    Date関数の引数は変えてはいけないので、セルB8の式を絶対参照に変える。
    =IF(B5>=WEEKDAY(DATE($B$2,$B$3,1)),B5- WEEKDAY(DATE($B$2,$B$3,1))+1,"")
    標準解答集では“$”が余計に付いているが、これは考え方を明確にするためである。
    • セルC5は 2、2010/3/1 は月曜日である Weekday は 2 となり‥‥
        =IF(2 >= 2, 2 - 2 + 1, "")
      即ち、IF 条件式は 真 となり、セルC5は 1 となる。
■ 2〜4週目の日付
  1. 日曜日の日付は前の週の土曜日の日付+1
  2. 月〜土曜日の日付は、前日の日付+1
§4. 5〜6週目の日付

通常、1ヶ月は5週あるが、2009年2月は4週、2010年1月は6週だった。
 なお、標準解答集の考え方では2月が4週しかない時エラーになるので、ここでは エラーにならない方法 で行う。

  1. セルB12
     「1週前(セルB11)+7」の月と、カレンダー月(セルB3)が同じであれば、1週前(セルB11)+7 とする。
    =IF(MONTH(DATE(B2,B3,B11+7))=B3,B11+7,"")
  2. セルC12〜H12
     セルB12の式を絶対参照に変えておく必要がある。
    =IF(MONTH(DATE($B$2,$B$3,B11+7))=$B$3,B11+7,"")
    その後、コピーすればよい。
  3. セルB13
     「2週前(セルB11)+14」の月と、カレンダー月(セルB3)が同じであれば、2週前(セルB11)+14 とする。
    =IF(MONTH(DATE(B2,B3,B11+14))=B3,B11+14,"")
  4. セルC13〜H13
     セルB13の式を絶対参照に変えてコピーする。
ヒント
  • セル内での改行は、[Alt]+[Enter]です。
  • セルの入力確定は[Enter]です。この時、カーソルの位置は問いません。
  • [Ctrl]+[Enter]で入力を確定するとカーソルが移動しません。
    (本来の目的とは使い方が異なるので注意してお使いください)
  • [改-1]シートで、セルB12をセルB13にコピペすると、式の内容が変わります。全く同じ式をコピペすることはできません。(たぶん)
     以下は私が行っている方法です。
    1. コピー元の式を選択し、コピー(Ctrl+C)します。
    2. メモ帳を起動し‥‥
      1. 貼り付け(Ctrl+V)ます。
      2. 全て選択(Ctrl+A)します。
      3. 切り取り(Ctrl+X)ます。
      4. メモ帳を閉じます。
        • 後からでもよい。
        • メモ帳にデータを残さないで閉じると、「変更を保存しますか?」が出ない。
    3. Excelに戻り、貼り付けるセルを選択し、貼り付け(Ctrl+V)ます。


§2.Excelに予定が入力出来るようにする

Lesson36は、印刷して、「予定は手書き」が基本です。印刷する時にわかっている予定は「予め入力」しておけるようにした方がいいのではないでしょうか?
そのためには工夫が必要です。「日」と同じセルに入力すると、何かの弾みで「日」を消してしまうことがあるでしょうから‥‥

■ 予定入力行を作る

日付行の下に予定行を挿入します。

  1. 第1週の日付の下の行(9行目)を行選択します。
  2. 選択した行を右クリックし、
  3. [挿入]をクリックします。
  4. 同様に、第2週の日付の下の行(11行目)を行選択し、
  5. [挿入]をクリックします。
  6. 以下、これを繰り返します。
■ 書式を設定する
  1. 全体が、例えば、A4版横 1ページに入るようにセルの大きさを決める。
  2. 罫線を引く
    • 日付と予定入力行の境界は「罫線なし」?
  3. 文字の色を決める
    • 例えば日曜日は「赤」、土曜日は「青」等
  4. 予定入力セルの書式を設定する。
    • 例えば、「折り返して全体を表示する」のか「縮小して全体を表示する」等


§3.シートを保護する

「カレンダー年」「カレンダー月」「予定入力欄」以外は選択(=変更)できないようにします。Excel演習問題集では、第3章 Lesson41の「ロックの解除」と「シートの保護」の方法です。

§1. 入力するセルを全て選択する
  1. セルB2(カレンダー年)をクリックする。
  2. セルB3(カレンダー月)を Ctrl+クリックする。
  3. セルB9〜H9を Ctrl+ドラッグする。
  4. セルB11〜H11を Ctrl+ドラッグする。
  5. セルB13〜H13を Ctrl+ドラッグする。
  6. セルB15〜H15を Ctrl+ドラッグする。
  7. セルB17〜H17を Ctrl+ドラッグする。
  8. セルB19〜H19を Ctrl+ドラッグする。
  9. [書式]メニューをクリックし、
  10. [セル]をクリックする。
  11. [保護]タブを選択し、
  12. 「ロック」のチェックを外す。
  13. [OK]をクリックする。

  14. [ツール]メニューをクリックし、
  15. [保護]をポイント、
  16. [シートの保護]をクリックする。
  17. 【シートの保護】ダイアログボックスで
    • 「シートとロックされたセルの内容を保護する」にチェックを入れる。(入っているはず)
    • 「ロックされたセル範囲の選択」のチェックを外す。
    • 「ロックされていないセル範囲の選択」にチェックを入れる。(入っているはず)
    • 上記以外はチェックを外す。(入っていないはず)
  18. [OK]をクリックする。
ヒント
  • ロックを解除するには
    1. [ツール]メニューをクリックし、
    2. [保護]をポイント、
    3. [シート保護の解除]をクリックします。


§4.より実用的にするためのヒント

  1. 予定入力欄を消去する マクロ を作る*1
    • マクロの作成: [ツール]メニュー ⇒[マクロ]⇒[新しいマクロの記録]
    • マクロの実行: [ツール]メニュー ⇒[マクロ]⇒[マクロ]⇒ マクロを選択 ⇒[実行]
    • マクロの削除: [ツール]メニュー ⇒[マクロ]⇒[マクロ]⇒ マクロを選択 ⇒[削除]で削除できるが、それでも Excelを開いた時【セキュリティ警告】は出る からややこしい。
  2. シートの
    • コピー: 可能
    • 名前の変更: 可能
  3. セル内の改行は[Alt]+[Enter]
  4. 毎週の予定の一括入力
     エラーが出るものの次の方法が使えます。
    1. セルG9〜G17 を選択する。
    2. “13:00 パソコン”と入力し、確定は[Ctrl]+[Enter]で行う。
    3. 警告が出るので、[OK]をクリックする。


§5.サンプルデータ

まりふのひと の SkyDrive」よりダウンロードできます。

  • ファイル名: Excel演習問題集(Lesson36)カレンダー.xls
    • [標準解答]シート
       「よくわかる Microsoft Office Excel 演習問題集」のサンプルデータそのものです。
    • [改-1]シート
       上記の手順で、式を入力した(標準解答集とは、第5〜6週が異なる)直後のものです。
    • [改-2]シート
       実用性を加味して、予定の入力行を別にした完成品です。
    • [改-完成]シート
       完成度を上げるため、入力するセル以外は触れないよう([ツール]メニュー ⇒)[保護]したものです。

*1:セキュリティの設定が高いとマクロは動きません(Excel2003Excel2007