SSブログ

お手軽立会日カレンダー作成 [エクセル]

トレーディングシステムによる運用を続けていく際、立会日カレンダーを毎年更新していく必要があります。
立会日カレンダーは東証サイトで確認できますが、これをエクセルに打ち込むとなると、一仕事になります。

そこで、今回はエクセルに立会日だけを設定する方法について、考えてみたいと思います。
なお、この手の作業は通常、マクロを使えば簡単に行なえるのですが、ここではあえてワークシートのみで実行してみます。

まずは、元となる立会日カレンダーの確認ですが、東京証券取引所サイト(http://www.tse.or.jp/)のトップページ右上にある「東証について」というボタンからアクセスできます。そのページを開き、左側のリストから「東証カレンダー」を選択すれば、月毎の立会日やイベントを知ることができます。

さて、まずはベースとなる日付の入力から行ないます。エクセルを実行し、A列5行目に「2012/1/1」と打ち込んでみます。続いて、その次行に「2012/1/2」と入力します。
なお、このままでは日付が表示しきれずに「####」などとなってしまう場合がありますので、A列の幅を10くらいに拡大しておきます。

続いて、先ほど入力した2行を同時に選択して、選択枠の右下にマウスカーソルを合わせます。すると、カーソル形状が「+」になりますので、そのまま下方にドラッグします。
これにより、1日ずつ増えた日付が下方にコピーされていくかと思います。そのまま370行までドラッグを続けると、ちょうど1年分の日付が設定されます。

これでとりあえず2012年のカレンダーができました。あとはここから、休場日の日付行を削除していくわけです。
ただ、カレンダーとにらめっこしながら土日祝日等を消していったのでは、あまりに効率が悪すぎます。そこで、最初に土日を判別できるようにしてみます。

B列5行目に「=MOD(A5,7)」と入力します。すると、「1900/1/1」と表示されるかと思います。でも、これでは後々困りますので、B列全体の表示形式を「標準」に変更しておきます。
シート上段の「B」を右クリックし、「セルの書式設定」を開いて表示形式を「標準」に設定し、「OK」を押します。これで、B5セルには「1」と表示されます。

続いて、B5セルを選択して右クリックから「コピー」を実行した後、B6~B370セルを選択してやはり右クリックから「貼り付け」を実行します。
この際、B6セルを選択した後、画面をスクロールさせてB370セルを表示し、「Shift」キーを押しながらB370セルを選択すると、B6~B370セルの範囲が全て選択されます。

さて、B列を見ると、0~6の数字が繰り返されていることが分かります。実はMOD(A,B)は、AをBで割った時の余りを求める関数です。
1週間は7日ですから、日付を7で割った余りは、それぞれ各曜日に対応することになります。

この場合、0が土曜日、1が日曜日に対応しています。そこで、B列の値が0か1の行を削除してやれば、土日曜日の行を削除することになります。
ただ、これだけでは間違って他の行を削除してしまう危険性を拭いきれません。そこで、削除する行に目印を付けることにします。それには、条件付き書式の設定を用います。

まず、B5~B370セルを選択します。その状態で、書式メニューから「条件付き書式」を選択します。条件(1)の設定画面で各条件を、「セルの値が」、「次の値の間」、「0」、「1」とし、その下の書式ボタンを押して、パターンタブで目立つ色(例えば赤)を選択し、「OK」を押します。設定画面のプレビューに選択した色が表示されましたら、「OK」ボタンを押します。

すると、B列の値が0か1のセルが(例えば)赤く塗り潰されます。あとはこのセルのある行を削除すれば、カレンダーから土日曜日を取り除くことができるのですが、ついでに他の休場日も塗り潰しておくことにしましょう。

東証カレンダーを見ながら土日曜日以外の休場日を調べ、その日付の行(のB列)を選択します。続いて、そのセルの色を条件付き書式で設定した色に変更します。
この作業を2012年末まで実行すれば、2012年版東証カレンダーがエクセル上に再現されます。

あとは、必要に応じて休場日を削除するわけですが、さすがにこれは手動で行なわなければなりません。
ただし、効率よく削除するためのテクニックはあります。

それは、「Ctrl」キーを押しながら削除する行(左端の数字)を選択し、全て選択し終わったところで編集メニューから「削除」を実行するという方法です。
選択した行は薄青く表示されますので、それを確認しながら作業を進めます。

なお、「Ctrl」キーを押しながらマウスのホイールを廻すと、シート画面表示が拡大または縮小してしまいますので注意してください。
以上で、立会日のみが行方向に順次設定されたワークシートの完成です。

あとは、これをコピー&ペーストしてシステムシートなどに貼り付けるか、それらのシートから参照すればOKです。
ちなみに、これはあくまで立会日ベースのシステムの場合です。カレンダーベースのシステムの場合は、全日付をそのまま用いる必要があります。

なお、最初に述べましたが、マクロを使えばより簡単に立会日カレンダーを作成することができると思います。
ただ、これは基本的に年1回ぽっきりの作業ですので、わざわざマクロを組むまでもないのかもしれません。

nice!(1)  コメント(3)  トラックバック(0) 
共通テーマ:

nice! 1

コメント 3

ファニーテイル

いつも大変興味深く拝読させていただいています。
曜日を調べる関数としてはWEEKDAY関数を利用するのもありですね。

by ファニーテイル (2011-12-07 21:36) 

Kフロー

ファニーテイルさん、はじめまして。
コメントいただき、ありがとうございます。

確かにWEEKDAY関数を用いても良いと思います。
今回は、曜日そのものの表示が重要ではないということと、条件付き書式設定を少しでも簡単にするために、MOD関数を用いてみました。

by Kフロー (2011-12-08 09:41) 

Kフロー

↑ちょっと勘違いしていました。
WEEKDAY関数は、曜日に応じて1~7の整数を返す関数でしたね。
ということで、WEEKDAY関数とMOD関数は、全く同じ使い方ができます。

by Kフロー (2011-12-08 12:56) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。