こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルの時間計算方法を教えて下さい。

大きな時間から小さな時間を引き算すると、所用時間が求められます。
たとえば、終了時間のセルから開始時間のセルを引き算すると所用時間が求められます。
ところが、開始時間は21時で終了時間が翌日の5時の場合は所用時間は8時間ですが、今は5時を29時に置き換えて29時時から21時を引き算しています。
これを、そのまま5時の入力で計算できるようにする方法を教えて下さい。

投稿日時 - 2014-08-28 20:22:36

QNo.8733989

困ってます

質問者が選んだベストアンサー

A1からB1までの時間数は
=MOD(B1-A1,1)
で時刻の書式を取り付けておけば出てきます。どっちが大きくても計算できます。

投稿日時 - 2014-08-28 21:46:02

お礼

keithin 様
回答ありがとうございました。
思うような結果がえられました。

投稿日時 - 2014-09-05 21:57:26

ANo.4

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

MOD関数だと、引き算の結果が負の数の場合商が-1になるので返り値が変わりませんか?
ABS関数の方がよさそうな気がしますが。

投稿日時 - 2014-08-29 09:34:30

お礼

chonami 様
回答ありがとうございました。

投稿日時 - 2014-09-05 21:58:50

ANo.3

たびたびごめんなさい。
1行間違っていました。

もう一度最初からコードを載せます。

Private Sub Worksheet_Change(ByVal Target As Range) 'この行から
With Target
If .Address = "$B$2" Then
If .Value <> "" And .Value < Range("A2") Then '←ココが間違いでした
.Value = .Value + 1
End If
End If
End With
End Sub 'この行まで

何度もごめんなさい。m(_ _)m

投稿日時 - 2014-08-28 21:31:25

お礼

tom04 様
回答ありがとうございました。
私には難しい内容でした。

投稿日時 - 2014-09-05 22:00:37

ANo.2

No.1です。

一番大事なコードを忘れていました。
コードは↓になります。

Private Sub Worksheet_Change(ByVal Target As Range) 'この行から
With Target
If .Address = "$B$2" Then
If .Value <> "" And .Value < Range("A1") Then
.Value = .Value + 1
End If
End If
End With
End Sub 'この行まで

どうも失礼しました。m(_ _)m

投稿日時 - 2014-08-28 21:28:36

ANo.1

こんばんは!

「終了時刻」はそのままの時刻を入力したい訳ですよね?
VBAになってしまいますが、一例です。

↓の画像のようにA2セルに「開始時刻」・B2セルに「終了時刻」を入力するとC2セルに「所要時間」が表示されるとします。

C2セルは単純に
=IF(COUNTBLANK(A2:B2),"",B2-A2)
という数式を入れておきます。

画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り
A2・B2セルに好みの時刻を入力してみてください。m(_ _)m

投稿日時 - 2014-08-28 21:17:49

あなたにオススメの質問