- Home »
- Excel講座の総目次 »
- Excel実用編:目次 »
- カレンダー(ボックスタイプ)の作成例
- Excel(エクセル)でボックスタイプのカレンダー(1ヶ月分)を作成します。
使用する関数と機能
- 使用する関数:IF MONTH WEEKDAY COLUMN ROW MATCH
- 使用する機能:日付の表示形式(ユーザー設定) 罫線 名前の定義 条件付き書式
- なお、このページでは1つの数式で作成する例を書いています。数式がやや難解になっていますのでご注意ください。
簡易な数式での作成も可能です。 カレンダーの作成例2 をご覧ください。
- A1セルに日付を入力するだけで、月毎のカレンダーを作成してみましょう。
- ここで説明している数式は、第1週の日曜日を求めています。
横方向へは+1、縦方向は+7とすることでボックス型のカレンダーが作成できます。
該当しない「月」の日付部分はIF関数で「""」を返すような仕組みです。
- A1セルに表示する月の日付を入力します。2006年11月なら「2006/11/1」と1日の日付と入力します。
- [ホーム]タブの数値グループにあるダイアログボックス起動ツールをクリックします。
または、ショートカットキー [Ctrl]+[1]キーでセルの書式設定を開くことができます。
![](gekkanyotei/cal-03b.gif)
- セルの書式設定で[表示形式]タブを選択します。
A1セルの表示形式をユーザー定義で「yyyy"年"m"月"」とします。
- A2セルに「日」と入力し、右方向へオートフィルでコピーします。
- A3セルに「=$A$1-WEEKDAY($A$1)+COLUMN(A1)+7*(ROW(A1)-1)」と入力し、G3セルまでオートフィルでコピーします。
更に(A3:G3が選択された状態で)8行目までオートフィルでコピーします。
- この数式のCOLUMN(A1)とROW(A1)のA1は数値の「1」が必要なのでそれぞれA1から始めています。
この部分は数式を入力するセル番地とは一切関係がありませんのでご注意ください。
- 列方向へ1,2,3・・・と連続するような数値にするためにCOLUMN関数でCOLUMN(A1)としています。
同様に、行方向へ1,2,3・・・と連続するような数値にするためにROW関数でROW(A1)としています。
- COLUMN関数は列番号を返すので「A」であればよく、A1でもA10でもA100でもよいことになります。
ROW関数は行番号を返すので「1」であればよく、B1でもAA1でもIV1でもよいことになります。
- 月初め(1日)の曜日をWEEKDAY($A$1)で求めます。
- 1日が日曜日なら「1」、月曜日なら「2」・・・、土曜日なら「7」が返されます。
- =$A$1-WEEKDAY($A$1)+1 とすることで1行目の日曜日の日付を求めることができます。
(例では2006/10/29を求めます)
- 日曜日の日付はWEEKDAY関数で求めた値-1 となりますので、
=$A$1-(WEEKDAY($A$1)-1)となるのですが、括弧を外して =$A$1-WEEKDAY($A$1)+1としています。
- 日曜日は+1、月曜日は+2、火曜日は+3・・・とするため・・・つまり、同一行では、右へは+1すればよいので、
=$A$1-WEEKDAY($A$1)+COLUMN(A1) としました。
- COLUMN(A1)を右方向(列方向)へコピーすることで+1、+2、+3・・・・といったことができています。
- 下の行方向は、+7ずつ増やせばよいので、+7*(ROW(A1)-1) を加えます。
- +7*ROW(A1)で+7ずつ増やすことができますが、第1週は0、第2週は7・・・とするため、+7*(ROW(A1)-1) としています。
- これらを合成すると、「=$A$1-WEEKDAY($A$1)+COLUMN(A1)+7*(ROW(A1)-1)」となります。
- 月の異なる日付を消すため数式を変更します。
=IF(MONTH($A$1)<>MONTH($A$1-WEEKDAY($A$1)+COLUMN(A1)+7*(ROW(A1)-1)),"",
$A$1-WEEKDAY($A$1)+COLUMN(A1)+7*(ROW(A1)-1))
- MONTH関数で月数を求め、IF関数で月数が異なっていたら空白「""」にしています。
- A3:G8セルの表示形式をユーザー定義の「d」に変更します。
- 表の書式を整えます
文字の色を「赤」「青」に変更し、中央揃えにしています。
祝日の色を変更します。 Topへ
- 祝日の一覧表を作成します。
I列に1年分の祝日を入力します。(J列は今回は入力する必要ないです)
- I1:I17を選択して、[数式]タブの[選択範囲から作成]を実行します。
- 「上端行」にチェックを入れて[OK]ボタンをクリックします。
セル範囲I2:I17に祝日と名前が定義されます。
- A3:G8セルを選択し、[書式]→[条件付き書式]を選択します。
「数式が」「=MATCH(A3,祝日,0)>0」として書式を設定します。
- Excel2010や2013では[ホーム]タブの[条件付き書式]→[新しいルール]を実行して、下図のように設定します。
- 祝日の文字色が変更されるようになります。
月曜始まりとしたい・・・ Topへ
- 結論だけ書きますと、A3セルの数式は=$A$1-WEEKDAY($A$1,2)+COLUMN(A1)+7*(ROW(A1)-1) とします。
- この数式はA3を開始位置としていますが、B3セルなど位置がずれるときにも
B3セルに=$A$1-WEEKDAY($A$1,2)+COLUMN(A1)+7*(ROW(A1)-1) とします。
- 第1週の月曜日の日付を求めるので、
WEEKDAY関数の引数で種類を「2」とすると、月曜日が1、火曜日が2、・・・日曜日が「7」となり、
前記の数式そのままの形が使用できます。
1行おきのカレンダーとしたい・・・ Topへ
- 結論だけ書きますと、A3セルの数式は
=IF(OR(MOD(ROW(A1),2)=0,MONTH($A$1)<>MONTH($A$1-WEEKDAY($A$1)+COLUMN(A1)+7*(INT(ROW(A1)/2)))),"",
$A$1-WEEKDAY($A$1)+COLUMN(A1)+7*(INT(ROW(A1)/2)))
となります。
- 偶数行のときは表示しない(""を返す)ようにします。
- 1行おきなので、0、○、1、○、2、○、3・・・ と一つ置きの連番を作成する必要があります。
INT(ROW(A1)/2)とすると、0,1,1,2,2,3,3・・・となり、IF関数で MOD(ROW(A1),2)=0 偶数行は"" としているので、
下表のように都合がよいものになっています。
|
必要な値 |
INT(ROW(A1)/2) |
1行目 |
0 |
0 |
2行目 |
|
1 |
3行目 |
1 |
1 |
4行目 |
|
2 |
5行目 |
2 |
2 |
6行目 |
|
3 |
7行目 |
3 |
3 |
8行目 |
|
4 |
9行目 |
4 |
4 |
- A3セルに数式を入力し、A3:A4セルを選択して、A12セルまでフィルハンドルをドラッグして数式をコピーします。
次いで、A3:A12セルを選択して、G列までフィルハンドルをドラッグして数式をコピーします。
下図のようになります。
- なお、下図は4,6,8,10,12行を選択して適切な行高さに変更しています。
スポンサードリンク
よねさんのWordとExcelの小部屋|Excel(エクセル)講座の総目次|Excel(エクセル)実用編:目次|カレンダーの作成例
PageViewCounter
![Counter](http://counter.eurus.dti.ne.jp/cgi-bin/Count.cgi?df=yoneyama.20.dat|md=7|dd=B|ft=0|negate=Y)
Since2006/2/27