トップ > スキル : アプリケーション > Excel(エクセル) > 基礎編(関数:黄金の組み合わせ術)

Excel

関数:黄金の組み合わせ術

日付を操る組み合わせ術

Excelは請求書、見積書などの書類作成にも役立ちます。その際、日付や時間を記述することは欠かせません。常に当日の日付を表示させる場合はTODAY関数を用いますが、そのほかにもYEAR、MONTH、DAY、DATE関数といった代表的な関数があります。これらを組み合わせて、年、月、日という個別の数値と日付データを活用することが、日付処理を行うポイントとなります。

Point:

Excelは、「シリアル値」で日付や時刻を管理しています。「シリアル値」とは、1900年1月1日を「1」として、1日ごとに「1」ずつ加算する連続した数値で、1900年1月1日から数えて2006年12月1日は「39052」というシリアル値になります。つまり、日付の計算は「シリアル値」で管理しているので、今日の日付から「+5」を加えると「5日後」という単純な計算で日付を扱えます。

◆ 日付関数

YEAR、MONTH、DAY関数を使うと、これらで年、月、日を分解した後、数値を足したり引いたりすることで「~年後」「~月前」「~日後」を求めることができます。また、DATE関数は、YEAR、MONTH、DAY関数の日付をまとめるときに使用します。

YEAR =YEAR(シリアル値) 日付データ(シリアル値)から「年」の数値だけを取り出す
MONTH =MONTH(シリアル値) 日付データ(シリアル値)から「月」の数値だけを取り出す
DAY =DAY(シリアル値) 日付データ(シリアル値)から「日」の数値だけを取り出す
DATE =DATE(年、月、日) 数値で指定した「年」「月」「日」に対応する日付データ(シリアル値)を作る
日付関数の簡単な使用例( Sheet:日付 )

翌月10日の支払日を求める( Sheet:日付(2) )

セル【E3】に「翌月の10日」が表示されるようにしましょう。
請求書などの「起票日」に「11/15」と入力すると、「支払日」に翌月の10日が自動表示されるようにします。
セル【E3】に次の数式を入力しましょう。

(※請求書の「起票日」に日付を入力すると、「支払日」に翌月10日が自動表示)

=DATE(YEAR(E1),MONTH(E1)+1,10)

セル【E3】に翌月10日の日付が表示されます。

毎月10日締め、翌月20日支払いを求める

例えば、「毎月10日締めで、翌月の20日支払い」のように、締めの日が決められていることがあります。
「締め日」によって支払日が変わるときは、IF関数と組み合わせます。
「毎月10日締めで、翌月の20日支払い」であれば、起票日が「10日以前」ならば支払いは「翌月20日」、「11日以降」なら「翌々月の20日」が支払日となります。
セル【E3】に次の数式を入力しましょう。

=IF(DAY(E1)<=10,DATE(YEAR(E1),MONTH(E1)+1,20),
       DATE(YEAR(E1),MONTH(E1)+2,20))

このように、IF関数を組み合わせれば、さまざまな条件に対応することができるようになります。

数式が長くなりますが、作業セルを使えば数式を簡潔にすることも可能です。

月末の日付を求める( Sheet:日付(3) )

次に、月末の日付を求めるにはどうすればよいか考えてみましょう。
月末の日付は「月」によって変わります。また、閏年であれば「2月」は「29」が月末日付になります。月末は、その月の翌月「1日」の前日になりますので、翌月の1日から「1」日引くことで、求めることができます。
次のような数式を入力しましょう。

このように、これらの日付関数を組み合わせることによって、さまざまな日付処理ができます。

分析ツール(アドイン)を利用する( Sheet:日付(4) )

「支払日」が土日や祝日と重なった場合、翌営業日に支払日をずらすこともあります。このような場合、WORKDAY関数を利用します。WORKDAY関数は初期状態では使えません。これはアドイン関数の一つなので、アドインをオン(有効)にしましょう。
メニューバーの「ツール」から「アドイン」を選択して「分析ツール」にチェックを入れます。

※ アドインとは、一般的に『プログラムに拡張した機能を追加装備させる』という意味のことを指します。

◆ 開始日から起算して、指定された稼動日数だけ前または後の日付に対応する値を返す(WORKDAY)

稼動日とは、土・日曜、および指定された祭日を除く日のことです。WORKDAY関数を使用すると、納品書の支払日、発送日、作業日数などを計算するときに、週末や祭日を除くことができます。

=WORKDAY(開始日,日数,祭日)

引数の「開始日」には、支払い予定日の前日を指定します。「日数」には1営業日後であれば「1」を指定し、「祭日」にはその年の祭日を指定します。よって、あらかじめその年の祭日を作成しておく必要があります。

起票日の日付の翌月の16日が支払日となることを前提にします。
まず、『作業セル』としてセル【B3】に「支払日の前日」となる「翌月15日」を求めます。セル【B3】に次の数式を入力しましょう。

=DATE(YEAR(B1),MONTH(B1)+1,15)

もし、16日が休日、祝日であれば次の営業日にずらすようにします。これは、支払い予定日の「前日」を基準に「1営業日後」を求めるという計算を作成するために必要なものです。
セル【B5】にWORKDAY関数を利用して、次の数式を入力しましょう。

=WORKDAY(B3,1,D2:D16)

「支払日」のセル【B5】はシリアル値として表示されます。表示形式を設定して日付の表示を変えましょう。
セル【B5】を選択します。
Ctrlキー+「1」キーを押して、[セルの書式設定]ダイアログボックスを表示させます。
[表示形式]タブを選択し、[分類]は[ユーザー定義]を選択します。[種類]のテキストボックスに次の形式を入力します。

yyyy/m/d(aaa)

曜日が表示された支払日になります。

Point:

表示形式で曜日を表すには「aaa」を使います。

・ aaa :月・火などの曜日のみ表示される。
・ aaaa :月曜日・火曜日と「曜日」も一緒に表示される。

この例では2006年12月16日が指定された支払日に当たりますが、16日が土曜日の為、次の営業日である18日(月)が支払日として表示されます。

土曜・日曜を識別して、その日は「休業日」と表示する( Sheet:日付(5) )

曜日の判定はWEEKDAY関数を用います。この関数は日付の曜日を番号で示すもので、IF関数と組み合わせると土日だけに「休業日」と表示できます。

◆ 日付を表すシリアル値から、日付に対応する曜日を返す関数(WEEKDAY関数)

=WEEKDAY(シリアル値,種類)

引数「シリアル値」は日付を指定しますが、「種類」の引数にはいくつかパターンがありますので、その例を下表に示します。

引数「種類」の値
1(省略可) 2 3 4 5 6 7 1
2 1 2 3 4 5 6 7
3 0 1 2 3 4 5 6

※WEEKDAY関数は、日付の曜日を決まった「曜日の番号」で指定するもので、仮に引数「種類」を「2」と指定すると、土曜が「6」、日曜が「7」となり「6以上」で土日と判定できるようになります。

では、カレンダーに土日は「休業日」と表示させましょう。また、D列には曜日番号を求めるための『作業セル』を作成しておきます。

セル【D3】に「10/01(日)」の曜日番号を求めるための数式を入力します。また、数式をセル【D15】までコピーしましょう。

=WEEKDAY(A3,2)

引数の「種類」は「2」にして、土曜日と日曜日を「6」「7」と指定します。

次にセル【B3】に次の数式を入力します。また、数式を【B15】までコピーしましょう。

=IF(D3>=6,"休業日","")

土、日曜の営業予定に「休業日」と表示されます。