PC Online パソコン&モバイル、インターネット情報とソフトウエア活用サイト

本文へジャンプ

特設サイト一覧
ホーム > ソフトウエア > Excel > 目次

2008年12月9日 page:1/3次へ

「2007」に関数の不具合?――過ちを繰り返す「DATEDIF」の受難(第72回)

田中 亨=テクニカルライター

印刷ページ
  • このエントリーをはてなブックマークに追加
  • Clip to Evernote
  • mixiチェック
「あとで読む」機能の使い方
出典:日経PC21 2008年11月号(執筆時の情報に基づいており、現在では異なる場合があります)

 年齢や勤続期間の計算に重宝する実用関数「DATEDIF」。だがExcel 2007では、全く同じ式が違った結果になることが…。試しに検算してみると、2007の不具合(バグ)であることは明白。この関数にまつわる歴史をひも解くと、原因の一端がうかがえる。

拡大表示

 「Excel 2007には不具合がある」──。あるExcel関連のコミュニティーサイトで、そんな話題が持ち上がっていた。新しいソフトにバグはつきもの。「またか」と読み進めていくと、珍しく関数についての指摘だった。なるほど、DATEDIF(デイトディフ)関数の式を立ててみると、全く同じ式にもかかわらず、従来版と2007とで、異なる結果になることがあるのだ。

 そもそもDATEDIF関数は、引数に「開始日」と「終了日」を指定して、その期間の長さを計算する関数。3番目の引数に、求める「単位」を指定する。単位を「Y」とすれば年数を計算できるので、とりわけ年齢計算に便利。開始日に生年月日、終了日に今日の日付を指定すれば、今日時点での満年齢を一発で計算できる。年数を除いた月の端数を求める機能もあり、「○年○カ月」のように勤続期間を算出したいときにも威力を発揮する。

 さて、上図に示した問題の式では、開始日を「2001年12月1日」、終了日を「2003年11月30日」と指定して、その期間の長さを求めている。正しくは「1年と364日」なので、単位を「YD」と指定して端数となる日数を求めれば、「364」と答えが表示されるはずだ。確かにExcel 2003ではそのように計算される。だが、2007で同じ式を立てると、「50」という明らかに間違った結果が表示されてくる。

年数や月数を一発で計算できる実用関数
DATEDIF関数は、引数に指定した「開始日」から「終了日」までの年数や月数を計算できるスグレもの。引数「単位」に所定の記号を指定して、求める単位を切り替える。単位は「"」で挟んで指定する
引数「単位」を「"Y"」とすれば年数が求められるので、今日時点の満年齢がわかる。「"YM"」とすれば月の端数が求められるので、年数を求める式などと組み合わせれば「○年○カ月」と表示できる

連載目次(新着順)

関連記事

キーワード

Excel

ショッピング

最新ランキング

PC Online会員登録

最新刊のご案内

最新の誌面から

  • 日経パソコン 2012年2月13日号

    日経パソコン 2012年2月13日号

    パソコンを仕事と生活に活かす総合情報誌
    ・Vista/XPから脱出せよ
    ・「2012年型パソコン」を読み解く
    ・ビジネスプリンター購入ガイドほか

  • 日経PCビギナーズ 2012年3月号

    日経PCビギナーズ 2012年3月号

    パソコン初心者応援マガジン
    ・写真とビデオをデジタル保存
    ・ウェブアルバムを使おう
    ・フェイスブック初めの一歩ほか

  • 日経WinPC 2012年3月号

    日経WinPC 2012年3月号

    パワーユーザーのためのPC総合情報誌
    ・2012年版自作の疑問100
    ・旬のPCケース25製品レビュー
    ・Radeon HD7970を速攻テストほか

  • 日経PC21 2012年3月号

    日経PC21 2012年3月号

    ビジネスマンのパソコン誌
    ・今すぐ始めるクラウド
    ・DVD&ブルーレイ活用術
    ・ネット&携帯電話 節約ガイドほか

日経パソコンスキルアップ倶楽部