勤務の定時が17:30で終業時間が19:30なら残業が2になりますよね。
例えばセルA-1に19:30と入力するとセルB-1に自動的に2と出るような関数を教えて下さい。
よろしくお願いします。

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

A 回答 (5件)

>空白にすることはできませんでしょうか



失礼しました。以下のようにします。
A1が未入力、またはゼロ、文字を入力したときは非表示(何も表示しない)にしました。
 =IF(OR(ISTEXT(A1),A1=0),"",(A1-"17:30")*24)

A1が24時を超える場合は次のようにします。でも計算結果が24時間以上は対応していません。
 =IF(OR(ISTEXT(A1),A1=0),"",((A1<"17:30"*1)+(A1-"17:30"))*24)
    • good
    • 0
この回答へのお礼

今度は完璧に出来ました。わざわざ二回も回答して頂きありがとうございました。助かりました。

お礼日時:2002/03/26 09:20

No.3までの方の場合は、いずれも終業時間が0時をまわると計算できません。


そこで、下記のような関数にすると、終業時間が0時をまわる場合でも計算できるようにしています。また、入力されていない場合は、0と表示するようにしてみました。
=IF(A22=0,0,IF(A22>TIMEVALUE("17:30"),0,1)+A22-"17:30")
まぁ、そんなに遅くまで残業する人はいないのかもしれませんが(^^;
    • good
    • 0
この回答へのお礼

完璧です。助かりました。

お礼日時:2002/03/26 09:21

B1のセルに


 =A1-"17:30"
と入力して
セルの書式設定→表示形式タブ→ユーザ設定を
[h]
にしてみて下さい。
    • good
    • 0

A1に19:30(時刻)と入力。

B1には

 =(A1-"17:30")*24

として、数値形式(小数点以下2位くらい)にします。
    • good
    • 0
この回答へのお礼

ありがとうございます。一応できたのですが、何も入力されていないばあいに変な数字が表示されてしまうのですが空白にすることはできませんでしょうか?

お礼日時:2002/03/25 17:30

こんにちは。

maruru01です。

定時がA1、終業時間がB1に、"時:分"の形式で入力されているとして、C1に

=HOUR(B1-A1)+MINUTE(B1-A1)/60

とします。
C1の表示形式は、標準か数値にしておいて下さい。
それから、定時などは必要に応じて絶対参照("$"付き)にして下さい。
では。
    • good
    • 0

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

この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 "7:30"*1と "19:30"*1 の違い

"7:30"*1 と "19:30"*1 は、違いますか?

また、7時間30分という時間を表したい場合は、
どのように書けばよいのですか?

Aベストアンサー

"7:30"*1 はAM 7時30分
"19:30"*1 はPM 7時30分 ですが

7時間30分という時間を表したい場合は、
セルに 7:30 と入力して、ツールバーの書式=>セル で
表示形式のタブで 分類 時刻の中の 時 分 を選択で、7時30分と表示
或いは
ユーザー定義で h"時間"m"分"で 7時間30分と表示します。

Q4:30を、別のセルに4と30に分けたい

Excelで時間給の計算をしています。
各人の合計の勤務時間を計算して、別のExcelの申請書に○時間○分の表記で経理に申請しないといけません。

件数が増えてきたので、申請書にLOOKUPで書き出せるようにしようと思っております。

計算結果は、例えば4:30と表示されるのですが、これはシリアル値(?)なので、4と30としては認識してくれないので、LEFT、RIGHTでは書き出せませんでした。

良い方法をご存知の方、お知恵を貸してください。
よろしくお願いします。

Aベストアンサー

はい、時刻の計算は、シリアル値になっています。

シリアル値から時刻のみを取り出すのは HOUR() 関数、分のみを取り出すのは MINUTE() 関数です。
それぞれ、=HOUR(対象セル) 、=MINUTE(対象セル) 、と書けば良いです。

----

なお、シリアル値は1日を1.0とする数値ですので、

時 =INT(MOD(対象セル*24, 24))
分 =MOD(対象セル*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 = ...続きを読む

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&Aランキング

おすすめ情報