|
DATEDIF関数の代用 DATEDIF関数この関数は、二つの日付間の年数、月数、日数を求めることのできるとても便利な関数です。 でも、EXCELの関数ボックスにはありませんし、OpenOffice.orgのCalc(表計算ドキュメント)の関数にありません。 もともと Lotus 1-2-3(ロータス1-2-3) 独自の関数ですが、Excel は、1-2-3 のファイルと互換性を保つために用意したものです。 ですから Excel2002 には、ヘルプにもこの関数のことがあえて記載されていません。 そこで次のようにして解決します。 ■DATEDIF関数のかわりに・・・ 1、日付連番(シリアル値)を使う場合 シリアル値とは、1899/12/30 をゼロ、1899/12/31 1、以下順に 2、3・・・というように日付を連続した数値としたものを言います。 他のソフトは、たいてい 1900/01/01 を1としています。この基準となる数値は変更することができます。 メニュー → オプション → 表計算ドキュメント → 計算 まず参考例として、LOTUS 1-2-3 では DATEDIF関数 を次のように使います。 結果は、1981年5月5日生まれの人の2003年5月4日現在の満年齢です。
EXCEL なら、 =DATEDIF(A2,B2,"y") OpenOffice.orgは、これに変わる関数が用意されています!!! ▼経過年数を求めるとき =YEARS(A2;B2;0)
=YEARS("2002/1/1";"2002/12/31";1) の結果が 0 になります。 参考 今日で何歳? =YEARS(A2;TODAY();0) ▼経過月数を求めるとき(MONTHS) =MONTHS(A2;B2;0)
=DAYS(B2;A2)
=WEEKS(A2;B2;0)
2、日付連番(シリアル値)を使わない方法
セルG2で年齢を求める式は、次の通りとなります。 =D2-A2+IF(B2>E2;-1;IF(AND(B2=E2;C2>F2);-1;0)) シリアル値を使わない方法は、次のようなメリットがあります。 ア、データベースとして使われると時、「生月」をもとにソート(並べ替え)すると、容易に誕生月別の一覧を作成することができます。 イ、誕生月別の人数も簡単に求めることができます。 ワークシート表1が次のようになっているとします。
5月生まれの人数は =COUNTIF(B2:B14;5) で求めることができます。 6月生まれの人数は =COUNTIF(B2:B14;6) で求めることができます。 別の方法としてデータベース関数を使ってみます。 ワークシート表2を次のようにします。
セルA2に注意してください。条件は文字列でなければなりませんので先頭にアポストロフィを付けます。 ウ、オートフィルタを使った作業も簡単です。 データ範囲を選択後、メニュー→データ→フィルタ→オートフィルタで行います。 なお、例題ではC列を非表示しています。 列番号右クリック、表示しないで行えます。表示する場合はその両側の列番号を同時に選択し、表示する、にします。
|