上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

--.--.-- | スポンサー広告 | トラックバック(-) | コメント(-) |

 例えば残業計算などで、退社時間が18:00以降であれば残業とみなしたり、その18:00以降の残業時間を計算しようとした場合、どのような数式を入力されますか?
 どこかのセルに「18:00」と入力しておいて、そのセルとの比較をする方法もありますが、数式内に「18:00」という文字列の時刻を指定して数式を記述する場合、注意が必要です。

 算術演算子(「+」や「-」など)と一緒に文字列の時刻をを指定する場合、Excelはきちんとシリアル値として計算してくれます。

 例えば、A1のセルに23:00が入力してあるとして、B1にA1から18:00を引く数式を入力します。
  ※ 表示形式の関数を省略するため、B1セルにはあらかじめ「[h]:mm」の書式が設定されているとします。

 =A1-"18:00"

 すると、算術演算子との組み合わせのお陰で、テキストである"18:00"がきちんとシリアル値として認識され、5:00という結果が表示されると思います。

 次に、先程の数式を、ただ単にA1から18:00を引くのではなく、【A1が18:00よりも大きい場合、A1から18:00までの差を出し、A1が18:00よりも小さい場合、空白を返す】という式に変更してみましょう。

 先程と同様に式を作成した場合、下記の様になると思いますが、これでは正しい答えが返ってきません。

 =IF(A1>"18:00",A1-"18:00","")

 実際に試してみるとおわかりだと思いますが、この結果は空白が返ってきます。何故なら比較演算子と文字列の時刻との組み合わせでは、シリアル値としては認識してくれないため、判定式で偽の場合として判断されてしまったからです。

 その為、文字列の時刻を指定する場合、関数「TIMEVALUE」を使うか、文字列としての時刻と算術演算子の組み合わせ(1をかけるなど)して、時刻文字列をシリアル値に直す必要があります。

 つまり、先程の数式で正しい結果を返すには、

☆TIMEVALUEを使った場合。
 =IF(A1>TIMEVALUE("18:00"),A1-TIMEVALUE("18:00"),"")
もしくは
 =IF(A1>TIMEVALUE("18:00"),A1-"18:00","")

☆比較演算子を使った場合
 =IF(A1>"18:00"*1,A1-"18:00","")

 としてやれば、正しい結果「5:00」が返ってくると思います^^

もうご存じの方も多いと思いますが、時刻計算の時は上記の点をご注意下さいね~♪


 参考URL:http://office.microsoft.com/ja-jp/excel/HP100788861041.aspx?pid=CH100648411041
       http://office.microsoft.com/ja-jp/excel/HP052093161041.aspx?pid=CH062528231041
スポンサーサイト

2008.11.17 | Excel | トラックバック(0) | コメント(0) |












管理者にだけ表示

トラックバックURL↓
http://cswmoon.blog12.fc2.com/tb.php/469-4797fa51

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。