PR

 今回は、Excelで予定表を作り、土日祝日に色をつけるプログラムを作ってみます。予定表をExcelで作り、業務に利用されている方は多いと思います。市販のカレンダーですと、はじめから、祝日が記入されているのですが、自作のものですと、なかなか祝日までは手が回らず、結局カレンダーと見比べているなんてことも多いのではないでしょうか。

 ここで作るプログラムでは、1年分のカレンダーを作り、土日祝日にそれぞれ色をつけてみます。

1年分のカレンダー作成プログラム(土日祝日記入機能付)

●プログラムの使い方

 このプログラムでは、2007年のプログラムを作ります。なでしこのエディタに以下のプログラムを貼り付けて実行ボタンを押すとExcelが起動し、日付などが記入されます。

21_1run.gif
図1 2007年度カレンダーを作成します

【プログラムソース1】

# --- 変数初期化
変数設定。
ROW=1
日付=開始日
# --- エクセルに日付を書き込む
エクセル起動。
エクセル新規シート。
オンの間
  # 日付を書き込む
  「A{ROW}」へ日付をエクセルセル設定。
  # 曜日を書き込む
  「B{ROW}」へ(日付の曜日)をエクセルセル設定。
  # 色分けする
  もし(日付の曜日)=「土」ならば
    「B{ROW}」をエクセル選択。水色でエクセル着色
  もし(日付の曜日)=「日」ならば
    「B{ROW}」をエクセル選択。$FF9999でエクセル着色
  # 祝日か判定する
  祝日一覧の1から日付を表ピックアップして祝日に代入。
  もし、祝日≠空ならば
    「B{ROW}」をエクセル選択。黄色でエクセル着色
    「C{ROW}」へ祝日[0][0]をエクセルセル設定。
  # 最終日?
  もし、日付=終了日ならば、抜ける。
  # 1日足す
  日付に「0/0/1」を日付加算して、日付に代入。
  ROW=ROW+1
「完了しました」と表示。

●変数設定
  開始日=「2007/01/01」
  終了日=「2007/12/31」
  祝日一覧=「元日,2007/01/01
成人の日,2007/01/08
建国記念の日,2007/02/11
振替休日,2007/02/12
春分の日,2007/03/21
昭和の日,2007/04/29
振替休日,2007/04/30
憲法記念日,2007/05/03
みどりの日,2007/05/04
こどもの日,2007/05/05
海の日,2007/07/16
敬老の日,2007/09/17
秋分の日,2007/09/23
振替休日,2007/09/24
体育の日,2007/10/08
文化の日,2007/11/03
勤労感謝の日,2007/11/23
天皇誕生日,2007/12/23
振替休日,2007/12/24」

【カスタマイズ方法】

 いつもなら、設定すべき項目を、プログラムの先頭に書くのですが、今回は、祝日データが長いのでプログラムの一番下にまとめてみました。

 開始日、終了日を変えたい場合は、プログラムの下の方にある変数「開始日」と「終了日」を変更します。例えば、5月だけのカレンダーを作りたい場合は、プログラム中の変数設定を下記のように書き換えます。

●変数設定
  開始日=「2007/05/01」
  終了日=「2007/05/31」

祝日の参照

 今回のプログラムを作るにあたって、祝日がいつなのか正確な日付を調べる必要がありました。そこで、検索エンジンで「国民の祝日」を調べてみると、内閣府が発表している国民の祝日のページを見つけることができました。

内閣府「国民の祝日について」

※2007年4月現在で、2007年/2008年の2年分の祝日が掲載されています。

 上記のページを見ると「国民の祝日」についての定義がありますので、計算して求めることもできますが、それは(ちょっと長くなりそうなので)別の機会したいと思います。

 今回は、ページから記念日と日付の一覧を抜き出して、プログラム中にあるようにCSV(カンマ区切り)形式で記述しました。なでしこでは、CSV形式を扱うのが得意なので、CSV形式で書いておきます。

Excelの起動に関して

 なでしこのプログラムで「エクセル起動」と書くと、Excelが起動します。Excelが起動しただけの状態だと、シートが1枚もない状態なので、「エクセル新規シート」命令を書いて、新規シートを挿入します。

エクセル起動。
エクセル新規シート。

 これまでは、Excelで雛形を作っておき、これを読み込んで、そこに何かしらの文字や数値を書き込むことが多かったと思います。雛形のExcelファイルを読み込む場合は、下記のように書きます。

エクセル起動。
「{デスクトップ}xxの雛形.xls」をエクセル開く。

Excelに値を書き込む

 値を書き込むには、「エクセルセル設定」命令を使います。これは、『「セル番号」へ「値」をエクセルセル設定』のような書式で使います。

エクセル起動。
エクセル新規シート。
「A1」へ「***」をエクセルセル設定。

Excelのセルに色をつける

 そして、肝心のセルに色をつける方法ですが、『(色)でエクセル着色』命令を使います。この命令は、選択されているセルに色をつけるという命令です。そのため、「エクセル着色」命令を使う前に、『「セル番号」をエクセル選択』命令を使って、色を塗る範囲を選択しておいてから着色します。

エクセル起動。
エクセル新規シート。
「C3」をエクセル選択。
赤色でエクセル着色。

繰り返し日付を加算する方法

 Excelでは、日付を入力し、セルの端をマウスでドラッグすることにより、オートフィル機能が使えます。日付を1日入力すれば、あとはマウスでドラッグするだけで、連続した日付をささっと作れて便利です。

 なでしこで、これと似たことをやっているのが今回のプログラムです。ただ、開始日と終了日が指定できる分、マウスで作るより楽でしょう。

 先頭のプログラムでは、色をつけたり、祝日を判定したりと少々複雑なので、プログラムをもっと単純にしてみました。

【プログラムソース2】

開始日=「2007/01/01」
終了日=「2007/01/05」

日付は開始日
オンの間
  日付を表示。
  日付に「0/0/1」を日付加算して、日付に代入。
  もし、日付=終了日ならば、抜ける。

 繰り返しプログラムを実行するのに「オンの間」構文を使っています。これは、本連載の16回目でも紹介していますが、字下げした範囲を、ひたすら繰り返します。

 ただし、ひたすら繰り返すだけでは、日付を表示し続けてしまいますので、繰り返しの最後で、「もし、日付=終了日ならば、抜ける」と書いて、日付が終了日に達したら繰り返しから「抜ける」ように指示しています。

祝日かどうかの判定

 最後に、日付が、祝日かどうか判定する方法ですが、これは、「表ピックアップ」命令を使って判定しています(「表ピックアップ」命令の詳しい解説は第11回をご覧ください)。「表ピックアップ」命令では、CSV形式(二次元配列変数)から、特定の列にある、特定のデータをピックアップできます。

【プログラムソース3】

一覧=「元日,2007/01/01
成人の日,2007/01/08
建国記念の日,2007/02/11
振替休日,2007/02/12
春分の日,2007/03/21
昭和の日,2007/04/29
振替休日,2007/04/30」
一覧の1から「2007/03/21」を表ピックアップ
それを表示。

21_2pickup.gif
図2 一覧から「2007/03/21」をピックアップします

最後に

 「エクセル着色」を使うと、Excelの特定のセルに色をつけることができます。

 今回のプログラムでは使いませんでしたが、最近のなでしこのバージョンアップで、セルの幅や高さを指定する「選択列幅設定」と「選択行高さ設定」命令をつけました。この命令と組み合わせることで、Excelのより細かい操作が可能です。色をつけたセルだけセルの高さを2倍にするなど、使い方はいろいろできそうです。

 また、行番号、列番号から、エクセルのセル名「A1」とか「B3」の形式を得るための命令「CELL(行,列)」も追加しました。

 また、今回のプログラムは、縦向きに日付を並べただけの予定表ですが、これを横向きにするのも、Excel上ではそれほど難しいことではないでしょう。

 実は、これを機になでしこに新しい命令を追加しました。CELL(行,列)命令です。今回紹介したプログラムではA{ROW}などと表現していた書き込むセルを「CELL(行,列)」(行と列にはそれぞれ数字が入ります)と表現できるようにしました。これを使えば、縦方向ではなく、横方向にカレンダーを簡単に作れると思います。。ぜひ、挑戦してみてください。(CELL(行,列)命令を利用するには、なでしこ最新版「version 1.5003」をインストールしてください)

 なお、答えのプログラムは「横向きカレンダー作成.nako」を見てみてください。(お使いのブラウザーによってはテキストデータが画面に表示されます。保存する場合はリンクの上でマウスの右ボタンをクリックし、Internet Explorerでは「対象をファイルに保存」、FireFoxでは「名前を付けてリンク先を保存」を選んでください)

はじめてこの連載を読む方へ
 この連載では、日本語でプログラムが書ける「なでしこ」というツールを使って仕事に役立ちそうなプログラムを紹介しています。なでしこのプログラムエディター(なでしこエディタ)に、記事中で紹介しているプログラムソースをコピー・アンド・ペーストし、実行ボタンを押すだけで、プログラムを動作させることができます。詳しい内容は本連載第1回をご覧ください。

【PCオンライン編集部からのお願い】
「なでしこ」は個々のユーザーの責任において利用してください。
コラムで紹介するなでしこのプログラム動作については編集部でも確認していますが、すべてのユーザーのパソコン環境で同じように動作することを保証するものではありません。
申し訳ありませんが、紹介する内容について、個別のご質問にはお答えしかねます。なでしこの公式ページでは詳しいマニュアルや質問を受け付ける掲示板が提供されていますので、そちらをご参照ください。
よろしくお願いいたします。