• BPnet
  • ビジネス
  • IT
  • テクノロジー
  • 医療
  • 建設・不動産
  • TRENDY
  • WOMAN
  • ショッピング
  • 転職
  • ナショジオ
  • 日経電子版
  • PR

  • PR

  • PR

  • PR

  • PR

田中亨「Excelの謎」

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

72

田中 亨=テクニカルライター 2008/12/09 日経PC21
出典:日経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」という明らかに間違った結果が表示されてくる。

年数や月数を一発で計算できる実用関数
2_spx400.jpg
2_spx400.jpg
引数「単位」を「"Y"」とすれば年数が求められるので、今日時点の満年齢がわかる。「"YM"」とすれば月の端数が求められるので、年数を求める式などと組み合わせれば「○年○カ月」と表示できる

ここから先はITpro会員(無料)の登録が必要です。

次ページ 従来版にも不具合が存在, 一部修正も新たなバグが...
  • 1
  • 2
  • 3

あなたにお薦め

連載新着

連載目次を見る

今のおすすめ記事

ITpro SPECIALPR

What’s New!

経営

アプリケーション/DB/ミドルウエア

クラウド

運用管理

設計/開発

サーバー/ストレージ

ネットワーク/通信サービス

セキュリティ

もっと見る