- ベストアンサー
エクセル2003で時間の計算について
エクセルで時間の計算を行ってますが詰まったので教えてください。 その1 計算によってもとめた時間の'分の一の位と"秒を取り出して、かつ秒を分単位で表示したいのです。 その数値はそのあとの計算で10進法で計算します。 A 10 19:08:45 11 21:08:01 12 -1:59:16 13 現在このようになってます。 A12のセルは[A10-A11]です。 A12の計算結果である-1:59:16の分の一の位、つまり9分16秒を分に換算して9.27(9.266...)というかたちでA13のセルに結果を出したいのです。 符号はabs関数で無くす予定です。 その2 さらにこの次の計算で特定のセル(たとえばA10)の'分が30分を超える場合は計算結果の符合を反転するようにしたいです。 わかる方がいらっしゃいましたらよろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
エクセル内部では1日はシリアル値の「1」、1時間は「1/24」、1分は「1/(24*60)」で表されます。 またエクセルでは以下の3つの表記は「10分」を表す表現として同じことです =TIMEVALUE("0:10:00") =1/(24*60)*10 → 式を整理すると =1/144 ="0:10:00"*1 以上が前フリになりますが、まずA10「19:08:45」の10分未満だけを取り出すのは =MOD(A10,"0:10:00"*1) でできます。この式は時刻を「10分」で割った剰余を求めています。すると結果として「0:08:45」が得られます。 更にこの値を10進数に直すには =MOD(A10,"0:10:00"*1)*24*60 です。書式は標準にしてください。すると「8.75」が得られます 従ってA13の式は =MOD(ABS(A10-A11),"0:10:00"*1)*24*60 になります。結果は十進数の「9.266667」になります。 >分が30分を超える場合は計算結果の符合を反転するようにしたいです これは少し意味不明ですが =IF(MINUTE(A10)>30,MOD(ABS(A10-A11),"0:10:00"*1)*1440,-MOD(ABS(A10-A11),"0:10:00"*1)*1440) のようなことでしょうか
その他の回答 (2)
- outerlimit
- ベストアンサー率26% (993/3718)
#2訂正 A12 は =ABS(A10-A11)*60*24 で 表示形式 標準か 0.00 です
お礼
ありがとうございます。 ×60、×24の使い方が理解できました。
- outerlimit
- ベストアンサー率26% (993/3718)
Excel の日付時刻表示は 1900年1月1日 0時0分0秒を 0.0 として 整数部で通算日を 小数部で 0時00分から23時59分59秒までを表します そのことが理解できれば 分の一の位以下を取り出す方法は 工夫できます 一例 A13に =A12-int(A12/10)*10 ただし A12 は =ABS(A10-A11) として 負にならないようにしないと 表示や A13の計算が 希望するようにはなりません A10~12は 表示を H:mm:ss形式 A13 は 標準形式か 0.00形式
お礼
解決いたしました。 とてもわかりやすかったです。ありがとうございます。 符号の反転は説明不足で申し訳ありません。 ちょっと混乱して、いらないこと(30分を超える)まで伝えてしまいました。 ごく簡単なことで先ほどのA12のセル[-1:59:16]が"-"符号なので 最終的な計算結果(おかげさまで求められました。)で求められた[-0:03:25]を"+"符号にしたいということでした。 こっちは自分で何とかします。というか-1を掛ければokでした。