- ベストアンサー
EXCELでの時間計算について教えてください。
EXCELでの時間計算について教えてください。 現在時刻が PM15:10だとして、 セルA1に =Now() セルB1に ="15:00:00" セルC1に =A1-B1 と入力すると、 セルC1には期待通りの"0:10:27"(A1とB1の時間差が10分)という結果が返ってきます。 それでセルD1に、差が10分以上であれば"○"を付けたいのですが、どのように式を書けばよいのでしょうか? よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
[No.3回答に対するお礼]に対するコメント、 》 色々な方法があるんですね! 貴方が思ってるのとチト違うかも。 計算されるもの(された結果)が整数の場合は =IF(C1-"0:10">=0,"○","") とか =IF(C1>="0:10"*1,"○","") でも問題ないのです。でも時間や時刻の計算は小数点を含むものになるので、“遠いところ”で端数処理をしておかないと駄目な場合があります。ROUND を噛ませたのは安全対策なのです。 例えば、セル A1 に 15:00:00 と入力、セル B1 に ="15:00:00" と入力した場合、式 =A1-B1 は通常は 0 を表示しますよね。だから等しいと思うでしょ?ところがギッチョン、式 =A1=B1 は何を返して来ますか?等しいなら TRUE のはずですよね?式 =A1>B1 とか =A1<B1 も試してみてぇ~ ちなみに、私は WinXP Pro SP-2 環境下の Excel 2002 で試しました。 =ROUND(value,10) の「10」が「遠いところ」ですが、もっと“遠く”「11」とか「12」にした方が良いかも?でも、馬鹿の一つ覚えみたいに遠けりゃ良いってものではありませぬ。「15」とか「20」は多分駄目です。
その他の回答 (4)
- mshr1962
- ベストアンサー率39% (7417/18945)
NOW()関数は計算時の日時+時刻を表示する関数ですので、時刻のみを取り出すなら A1=MOD(NOW(),1) B1="15:0:0" C1=ABS(A1-B1) D1=IF(C1<"0:10","","○") ※数式なので再計算しなければ10分立っても表示は変わりません。 タイマーのようにしたいのなら、別の工夫が必要でしょう。
=IF(ROUND(C1-"0:10",10)>=0,"○","")
お礼
ご回答ありがとうございます、早速試してみます! 色々な方法があるんですね!
- grumpy_the_dwarf
- ベストアンサー率48% (1628/3337)
ごめん、訂正です。数値化の呪文を忘れてました =if(C1>="0:10"*1,"○","")
お礼
ご回答ありがとうございます、早速試してみます!
- grumpy_the_dwarf
- ベストアンサー率48% (1628/3337)
=if(C1>="0:10","○","") 10分未満の場合はなにも表示していません。
お礼
とりあえず、 38813.00347(5分差)より小さいかどうかで判断することにしました。 もっとスマートな方法がありましたらお教えください。 よろしくお願いします。
補足
教えて頂いた方法を試してみましたが、 時間差が10分未満であっても10分以上であっても、セルD1には何も表示されませんでした。 なにか記述に問題があるのでしょうか…?
お礼
ご回答ありがとうございます、早速試してみます! タイマーは擬似的に↓で処理しています。 Worksheets("Sheet1").Range("A1") = Now + TimeValue("00:00:01") Application.OnTime Worksheets("Sheet1").Range("A1"), "main"