社員の就業時間をExcelで出せたらいいな、と思って作ろうとしています。
出社時刻と退社時刻を入力したら、就業した時間が出るようにしたいのですが、
どのような式にすればいいのでしょうか。

30分きざみで計算したいのです。
10:00~10:29までの出社時間では、10:30からの勤務ということになり、
(出社が10:30だったら11:00からの勤務ということになる。)
18:00~18:29までの退社時間は、18:00までの勤務ということになります。

例えば
セル(A1)に10:05、(B1)に18:02、と入れたら(C1)に7.5と表示させるには、
(C1)にどのような式を書けばよいのでしょう。
(C1)の単位は「時間」です。

どなたか分かる方いましたらぜひ、助けて下さい!!

このQ&Aに関連する最新のQ&A

A 回答 (5件)

(A1)(B1)は値をシリアル値(1日が1)で持っています。


(A1)を30分単位にするには、CEILING(A1+1/1440,1/48)
(B1)を30分単位にするには、FLOOR(B1,1/48)

あとは差をとって時間単位に直せばいいので、(C1)に
=(FLOOR(B1,1/48)-CEILING(A1+1/1440,1/48))*24
と入力すればいいようです。

あるいはちょっと計算して
=FLOOR(B1*24,.5)-CEILING(A1*24+1/60,.5)
でもいいですね。
    • good
    • 0

a1を30分単位にするには


=CEILING(A1*24,0.5)/24

で良いと思います

また参考urlを付けときます

がんばって下さい

参考URL:http://www2.odn.ne.jp/excel/waza/function.html#S …
    • good
    • 0

●こんな方法はいかがでしょうか。


1.セル(D1)にセル(A1)を30分きざみで計算した値
"=TIME(IF(30<=MINUTE(A1),HOUR(A1)+1,HOUR(A1)),IF(30<=MINUTE(A1),0,30),0)"を入力します。
2.セル(E1)にセル(B1)を30分きざみで計算した値
"=TIME(HOUR(B1),IF(30<=MINUTE(B1),30,0),0)"を入力します。
3.セル(C1)にセル(E1)からセル(D1)を引いた値
"=E1-D1"を入力します。
    • good
    • 0

すみません、No.2の補足です。


式を入力すると表示形式が変わって、違う値が表示されるかもしれません。
その場合、(C1)を右クリックして、セルの書式設定から、表示形式を標準に変えて下さい。
    • good
    • 0

こんにちは。


確かに、A1,B1にデータを入れて、C1にごたごたと長い式を書くのもよいのでしょうが、ちょっと私的にはあまり考えたくありませんね。
A1:出社時間入力
B1:退社時間入力
C1:計算式 就業時間開始(非表示セル)
D1:計算式 就業時間終わり(非表示セル)
E1:C1とD1から就業時間を算出するセル

のような構成ではどうでしょう?
C1、D1では入力された時間からHOUR関数、MINUTE関数を使って時間と分を取り出して、IFなどの条件分岐でわけてあげる計算式を入れます。計算結果は時刻型じゃなく(たとえば、10:30なら10.5として)する。
これで、C1、D1のセルには、計算結果として勤務開始と勤務終了が入っていますので、E1では単純に算術減算してやればよい。
で、C1とD1の列は非表示にしてしまう。と。

一つのセルだけにすべての計算式書こうとすると結構すごいことになると思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qあるセルに17:00と表示されてるのに、編集時に(セルをダブルクリックすると)5:00:00PMと表示されるには?

エクセル(97)のあるセルに「17:00」と
表示されてるのに、編集する時にセルを
ダブルクリックすると「5:00:00 PM」
と表示される事があるのですが、
これはどうやってるのでしょう?

表示形式を変えてしまうと、表示そのものが変わってしまいます。
何かの裏技でしょうか?

Aベストアンサー

OS側の時刻表示の設定です。
Windows2000の場合はコントロールパネルの地域のオプションの時刻タブで
時刻の形式「tt hh:mm:ss」
午前の記号「AM」
午後の記号「PM」
にすればそうなります。
ただタスクバーの時計の表示もこの形式になりますが...

QExcelでセルに入っている数字を時刻(0:00:00)として表示する方法(※セルの表示形式の変更ではありません。)

   A   B  
1  24  0:00:24
2  76  0:01:16

セルA1に「24」という数字が入っています。
セルA1の数字を秒として、セルB1に「0:00:24」と表示させたいです。

セルA2、B2のようにもできれば理想です。

単純に関数を使って「="0:00:""A1"」とB2に入力しても、正しく表示はできませんでした。
「="0:00:"A1」も同様に、関数ではないのでエラーです。

方法ご教授お願いいたします。

Aベストアンサー

一例です。
B1に=A1/24/60/60で如何でしょうか。(セルの書式設定で表示形式を時分秒に変更して下さい)

Q(続)エクセルでVBAを使い、時間入力10:30:45(10時30分45秒)の:コロン省略したい。

始業と終業の時間を入力し勤務時間を計算しております。
時間は時:分:秒まで入力します。
例えば始業時間はA1に8:30:25 、終業時間はB1に17:00:45と入れております。
コロン(:)を省略できるととても楽になります。8:30:25は83025と入力、17:00:45は170045と入力して、
表示にはコロンが入り、セルの書式としては時刻と認識し時間差を(時間:分:秒)と計算出来ればありがたいです。
よろしくお願い致します。

VBAを使った(時間:分)のコロンを入力しないで、かつ表示にはコロンが入り、セルの書式としては時刻と認識し時間計算が出来る例は検索できました。
下記です。 t****さんありがとうございました。
ですがそれを秒まで拡大し(時間:分:秒)に対応できるVBAに変更できず困っております。
何卒よろしくお願い致します。

-----------------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range) 'この行から
If Intersect(Target, Range("A:B")) Is Nothing Or Target.Count > 1 Then Exit Sub
With Target
If .Value <> "" Then
If IsNumeric(.Value) Then
If .Value < 2400 And .Value Mod 100 < 60 Then
Application.EnableEvents = False
.Value = TimeSerial(Int(.Value / 100), .Value Mod 100, 0)
.NumberFormatLocal = "h:mm"
Application.EnableEvents = True
Else
MsgBox "入力値が不正です"
.Select
.ClearContents
End If
End If
End If
End With
End Sub 'この行まで
-----------------------------------------------------------------------------

始業と終業の時間を入力し勤務時間を計算しております。
時間は時:分:秒まで入力します。
例えば始業時間はA1に8:30:25 、終業時間はB1に17:00:45と入れております。
コロン(:)を省略できるととても楽になります。8:30:25は83025と入力、17:00:45は170045と入力して、
表示にはコロンが入り、セルの書式としては時刻と認識し時間差を(時間:分:秒)と計算出来ればありがたいです。
よろしくお願い致します。

VBAを使った(時間:分)のコロンを入力しないで、かつ表示にはコロンが入り、セ...続きを読む

Aベストアンサー

変換ロジックを関数化して実装してみました。
「8:30:25」「83025」どちらの入力でも対応できているはずです。
ちなみに、2未満を入力すると日とみなし、2以上を入力すると秒とみなして表示されます(この辺はやってみて下さい)。

Private Sub Worksheet_Change(ByVal Target As Range) 'この行から
If Intersect(Target, Range("A:B")) Is Nothing Or Target.Count > 1 Then Exit Sub
With Target
If .Value <> "" Then
Application.EnableEvents = False
.Value = MyTimeValue(.Value)
If .Value = "" Then
MsgBox "入力値が不正です"
.Select
Else
.NumberFormatLocal = "[h]:mm:ss"
End If
Application.EnableEvents = True
End If
End With
End Sub 'この行まで

Function MyTimeValue(MyTime As Variant) As Variant
Dim t As Variant
Dim d As Variant
If IsNumeric(MyTime) And MyTime < 2 Then
MyTimeValue = MyTime
Exit Function
End If
On Error GoTo Fin
t = Split(Format(MyTime, "000:00:00"), ":")
d = Int(t(0) / 24)
t(0) = t(0) Mod 24
MyTimeValue = d + TimeSerial(t(0), t(1), t(2))
Fin:
End Function

変換ロジックを関数化して実装してみました。
「8:30:25」「83025」どちらの入力でも対応できているはずです。
ちなみに、2未満を入力すると日とみなし、2以上を入力すると秒とみなして表示されます(この辺はやってみて下さい)。

Private Sub Worksheet_Change(ByVal Target As Range) 'この行から
If Intersect(Target, Range("A:B")) Is Nothing Or Target.Count > 1 Then Exit Sub
With Target
If .Value <> "" Then
Application.EnableEvents = False
.Value = ...続きを読む

Q7桁の時刻(00:00:00.0)のコンマ以下を省略する方法を分かる方教えて下さい!

エクセル初心者につき、教えて下さい!

7桁の時刻のコンマ以下を省略したいのですが、その方法を分かる方、教えて下さい!
例 18:34:32.5→18:34:32

Aベストアンサー

No.6です。
まだ解決していませんでしたか。

四捨五入ではなく切り捨てにしたいのであれば、
=TEXT(A1-"00:00:00.5","hh:mm:ss")*1
のように、丸めたい下の桁から5引いてから四捨五入されるようにするとよい。

TEXT関数で、数値に対して書式を指定して表示させ、1を掛けることで数値(シリアル値)に戻しています。
数式を入力したセルの表示形式をユーザー書式で "h:mm:ss" または "hh:mm:ss" にしてください。

Q1/1 15:00 - 1/2 13:00 の時間を23.0と表現したい

すいません。
質問が1つございます。

1/1 15:00 - 1/2 13:00 の時間を23.0と表現したいがどうすればよいでしょうか。

添付画像の通りですが、1/1 12:00 - 1/1 14:00 は 下記の式で2.0と対応できます。
(14:00 - 12:00) * 24

1/1 15:00 - 1/2 13:00 の場合、 -2.0と表現されてしまいます。。。

1/1 15:00 - 1/2 13:00 の時間を23.0と表現する方法を教えていただければ幸いです。

Aベストアンサー

まずE列に「=(C1-A1+D1-B1)*24」の式を入れて、書式は「0.0」にします。

ちなみに「23.0」は「22.0」の間違いですよね


このカテゴリの人気Q&Aランキング

おすすめ情報