• ベストアンサー

7時間15分を1日と換算する計算について

恐れ入ります。 エクセルで以下の計算をしたいのですが、お知恵をお貸しください。 年次休暇の計算をエクセルでしたいと思います。 まず前提として、7時間15分をもって「1日休」と換算します。 そこで、ある人が16時間の時間休をとったとします。 セルに「16」と入力すると自動的に2日と1時間30分という「回答」をさせたいのです。 どのような計算式になるか教えていただけるとたすかります。 どうぞよろしくお願いします。

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

A1=16なら =TEXT(INT(TIME(A1,0,0)/"7:15")+MOD(TIME(A1,0,0),"7:15"*1),"d日とh時間m分") A1=16:00なら =TEXT(INT(A1/"7:15")+MOD(A1,"7:15"*1),"d日とh時間m分")

maruzenkuroneko
質問者

お礼

ありがとうございます。今回は最も早くご回答いただいた方をベストアンサーとさせてください。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (7)

回答No.8

No.6 です。 計算誤差が発生する具体的なケースを前回載せていませんでしたね。 誤差は、たまにしか発生しません。さらにそのうちのごく一部に過ぎませんが、例えば添付図 A 列の時間を入力すると、B 列では誤差が発生していることが分かります。 たとえ A 列には整数しか入力しなかったとしても、小数である「7:15」のシリアル値にそもそも誤差が含まれているため、それを使っている限り、誤差が残る場合があるのですね。 整数化は、一つの有効な誤差対策です。全体の数式は、ちょっと長くなってしまいますが。 15 桁以下の整数は、Excel において、(小数から誤差を引き継いだりしていなければ)誤差を含みません。だから整数だけを使って計算すれば、確実に正しい結果が得られます。 次の D2 セルの数式は、(1) A 列の時間を 100 倍して整数化し、(2)それを分単位に直すとともに小数から引き継いでいる誤差を ROUND 関数によって除去し、(3)「7:15」も分単位に直してから((60*7+15)分)、ご質問の日数・時間数を算出しています。分単位(の 100 倍)だから、全部整数になっていますね。 誤差対策なし B2 =int("1:00"*a2/"7:15")&" 日と "&text(mod("1:00"*a2,"7:15"),"h 時間 m 分") 7 桁残し C2 =int(round("1:00"*a2/"7:15",7))&" 日と "&text(round(mod("1:00"*a2,"7:15"),7),"h 時間 m 分") 整数化 D2 =int(round(60*a2*100,0)/((60*7+15)*100))&" 日と "&int(mod(round(60*a2*100,0),(60*7+15)*100)/(60*100))&" 時間 "&mod(mod(round(60*a2*100,0),(60*7+15)*100),60*100)/100&" 分" C 列・D 列の一致 E2 =c2=d2 なお C2 の方法では、7 桁くらいがちょうどいい桁数です。 誤差を除去する際、四捨五入により残す桁数が少ないほど確実に除去でき、ある程度の桁数さえあれば、ムダにたくさん残していなくても正確な時間のシリアル値に一致してきます。しかし、あまりにも桁数が少ないと、前回から説明しているものとは別の種類の誤差を生んでしまいます。 添付図のように 1,000.00 以上 10,000.00 未満の時間を入力する場合は、最低限 6 桁は必要ですが、余裕を見て 1 桁増やし、小数点第 7 位まで残すこととしました。上の計算では小数点第 14 位・15 位あたりの数字がずれると考えられるので(入力値と「7:15」という 2 数で 1 回演算する場合はそうなる)、この桁数で確実に誤差を除去できていると考えられます。 もしも入力値を小数点第 3 位までにしたいという場合は、8 桁を残すようにすればいいでしょう。

全文を見る
すると、全ての回答が全文表示されます。
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.7

 通常ですと、Excelでシリアル値による時間を扱う際には計算誤差が生じる恐れを考えなくてはなりませんが、本件の場合では、時間休をシリアル値ではなく、時間(hour)単位で扱うため、計算誤差が生じる恐れを考慮しなくても済む分、処理が楽になる面があります。  しかしながら、7時間15分を1日として扱う必要がある事によって、計算誤差の処理など比べ物にならない程に、面倒な事になっています。  今仮に、Aさんの前年度繰越の年次休暇がB2セルに、1回目に摂った時間休の値が(時間[hour]単位で)D2セルに、2回目に摂った時間休の値がE2セルに、3回目に摂った時間休の値がF2セルに、それぞれ入力されているものとします。  同様に、Bさんの前年度繰越の年次休暇がB5セルに、1回目に摂った時間休の値がD5セルに、2回目に摂った時間休の値がE5セルに、3回目に摂った時間休の値がF5セルに、それぞれ入力されていて、 Cさんの前年度繰越の年次休暇がB8セルに、1回目に摂った時間休の値がD8セルに、2回目に摂った時間休の値がE8セルに、3回目に摂った時間休の値がF8セルに、それぞれ入力されているものとします。  そして、時間単位で各時間休の値が入力されているセルの1つ下のセルに、時間休の値を関数を用いて日時分に換算した値を表示させ、 同じく2つ下のセルには休暇日時の残の値を表示させるものとします。(添付画像を参照の事)  まず、D3セルとD4セルの書式設定の表示形式を[ユーザー定義]の [<1]h"時間"mm"分";d"日と"h"時間"mm"分" にして下さい。  次に、D3セルに次の関数を入力して下さい。 =IF(ISNUMBER(D2),D2/24+INT(D2/7.25)*(1-7.25/24),"")  次に、D4セルに次の関数を入力して下さい。 =IF(AND(ISNUMBER(D2),ISNUMBER(1/(IF(ISNUMBER(LEFT($B2,FIND("日",$B2)-1)+0),LEFT($B2,FIND("日",$B2)-1)*7.25,0)+(0&REPLACE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(ASC($B2)," ",),"と",),"間",),1,IF(ISNUMBER(FIND("日",$B2)),FIND("日",$B2),0),)&IF(AND(ISNUMBER(FIND("時間",$B2)),ISERROR(FIND("分",$B2))),"0分",""))*24>=SUM($C2:D2)))), (IF(ISNUMBER(LEFT($B2,FIND("日",$B2)-1)+0),LEFT($B2,FIND("日",$B2)-1)*7.25,0)+(0&REPLACE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(ASC($B2)," ",),"と",),"間",),1,IF(ISNUMBER(FIND("日",$B2)),FIND("日",$B2),0),)&IF(AND(ISNUMBER(FIND("時間",$B2)),ISERROR(FIND("分",$B2))),"0分",""))*24-SUM($C2:D2))/24+INT((IF(ISNUMBER(LEFT($B2,FIND("日",$B2)-1)+0),LEFT($B2,FIND("日",$B2)-1)*7.25,0)+(0&REPLACE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(ASC($B2)," ",),"と",),"間",),1,IF(ISNUMBER(FIND("日",$B2)),FIND("日",$B2),0),)&IF(AND(ISNUMBER(FIND("時間",$B2)),ISERROR(FIND("分",$B2))),"0分",""))*24-SUM($C2:D2))/7.25)*(1-7.25/24),"")  次に、B2~B4のセル範囲内にあるセルを結合して下さい。  次に、D3~D4の範囲をコピーして、E3~F4の範囲に貼り付けて下さい。(必要があれば、貼り付ける範囲を更に右方向に拡大しても構いません)  次に、D2~F4の範囲をコピーして、同じ列の5行目以下に貼り付けて下さい。  以上で準備は完了で、後はB列に前年度繰越の年次休暇を入力してから、D列~F列の2行目、5行目、8行目に、摂った時間休の値を時間(hour)単位で入力しますと、その1つ下のセルに入力した時間休の値を日時分形式に変換した値が表示され、そのまた下のセルに休暇の斬日時が表示されます。  尚、この方法で表示する事の出来る休暇の日数は31日までで、それを超える日数を正しく扱う事は出来ませんので、注意して下さい。

全文を見る
すると、全ての回答が全文表示されます。
回答No.6

手を打っていないと、計算誤差により、正しい答えを表示しないケースがあります。それでも大体合っていれば気にしないという方針もあるのかもしれませんが、特に MOD 関数がマイナスの時間が発生させる場合は、数式全体がエラーになってしまうので、イマイチです。 次式は、ROUND により誤差対策をしています。ですから A 列をいろんな時間に書き換えても、正しく表示すると思います。 B1 =int(round("1:00"*a1/"7:15",7))&" 日と "&text(round(mod("1:00"*a1,"7:15"),7),"h 時間 m 分")

全文を見る
すると、全ての回答が全文表示されます。
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.5

>たとえはAさんは20日、Bさんは15日3時間、Cさんは6日2時間15分 無理にやって出来ない事はありませんが、素直に  20日×7.25時間=145時間残り  15日×7.25+3時間=111時間45分残り といった具合に「何時間残してるのか」に数字を戻してから今年度の「1時間単位」の消費を計算していくような手順をお勧めします。 またその際は、分単位で残してた時間の取り扱いを具体的にどうする事にしてるのかとかも、あなたの会社のやり方をしっかり条件提示してもらう必要があります。 >さらに、もうひとつ甘えさせてください。 お断りします。 こういう具合にダラダラとついでについでに違う事も聞いちゃえと、終わらないご相談があんまり多くて迷惑しています。 また元のご相談がすっかり無かったことになって、新しい方が解決すると嬉しくなっちゃうのも「元のご相談に回答してくださった皆さん」に大層失礼と思いませんか。 このご相談は「7時間15分を1日で数える計算方法について」のご質問でした。 それが解決したらこのご相談は一回「解決」の操作で閉じてから、新しいご相談は別のご質問として新たに投稿してください。 そうしてくれたら、追加ご質問の「具体的な計算式の立て方」とかについても、改めて回答できるかもしれません。(もちろん他の皆さんからも、きっとまた良いやり方が幾つも寄せられると思いますけど。)

maruzenkuroneko
質問者

お礼

ご助言ありがとうございます。改めて具体的な質問をさせていただきます。

全文を見る
すると、全ての回答が全文表示されます。
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.4

A1には「16」と「1時簡単位」で記入します。 >7時間15分をもって「1日休」と換算 7時間15分を1時間単位で表すと7.25時間です。 これだけの時間数ごとに「1日」なので、計算は =INT(A1/7.25) & "日" & TEXT(MOD(A1,7.25)/24,"h時間mm分") といった具合にすることもできます。 #まぁ個人的には =TEXT(A1*"1:0"/"7:15","d日")&TEXT(MOD(A1*"1:0","7:15"),"h時間mm分") とかしますけど。 #余談ついでにA1に「16時間15分」のつもりで「16.15」とか記入したい場合 =TEXT(TEXT(A1*100,"0!:00")/"7:15","d日")&TEXT(MOD(TEXT(A1*100,"0!:00"),"7:15"),"h時間mm分") とかで。

maruzenkuroneko
質問者

お礼

みなさん、大変迅速な御回答ありがとうございます。 回答者4様のところでまとめてお礼させてください。 さらに、もうひとつ甘えさせてください。 人によって前年度繰越の年次休暇が違うとします。 たとえはAさんは20日、Bさんは15日3時間、Cさんは6日2時間15分 この繰越年次休暇から消費した「○日△時間◇分」を引いた残りをエクセル上で実現したいのです。 一度にお尋ねせず、すみません。

全文を見る
すると、全ての回答が全文表示されます。
  • chayamati
  • ベストアンサー率41% (255/609)
回答No.3

24時間は1日ですね A1に7:15 A2に16を入れ B2に日数 C2に残り時間を求めます B2=INT(A2/24/$A$1) C2=MOD(A2/24,$A$1)

全文を見る
すると、全ての回答が全文表示されます。
  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.2

A列に任意の時間数を h:mm の書式で入力することを条件にして、B列に日数、C列に端数時間を算出することで良ければ次の式で良いでしょう。 B2=INT(A2/"7:15") C2=MOD(A2,"7:15") 結果を添付画像で確認してください。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセル 分を換算

    エクセルで分を時間と分に換算する計算式を教えてください。(例えば200分を3:20のように)よろしくお願いします。

  • エクセルでの時間の計算

    エクセルでの1時間25分+5時間57分と分を時間に繰り越す場合の自動計算の方法があるのでしょうか?調べてみたのですが、別々のセルに時間・分を入れて計算する方法はでてるのですが、一つのセルに1:25と5:57をいれて7:22と表示されるのは不可能なんでしょうか?教えて下さい。

  • 0.00分⇒0分0秒に換算したい。

    例)1.32分を1分○秒に換算したいのですが、計算方法が分かりません。 エクセルにデータ収集していきたいので、 計算式を教えて頂けると助かります。

  • エクセル2000での時間換算

    Excel2000使用初心者です。過去の検索もしたのですが、要領を得なかったのでご質問致します。 A1セルに時間を数値入力します。例えば「25」(時間) A2セルに分間を数値入力します。例えば「90」(分間) A3セルに秒間を数値入力します。例えば「130」(秒間) A1からA3の時間を合計して換算された答えを、以下のセルにそれぞれ数値で.. B1に「26.32.10」(26時間32分10秒) B2に「1592.10」(1592分間10秒) B3に「95530」(95530秒間) と求めたいのですけれど、どのような関数式を作ればよいかご教示下さい。 よろしくお願いします。

  • エクセルでの計算式もしくはシートの作り方 1日を7時間45分に

    エクセルで年次有給休暇簿を作ろうとしています。  作り方を教えてください 年休は時間単位で修得できます。 しかし,今年から勤務時間が8時間から7時間45分に変更になり累計の計算が煩雑になりました。  今までは年休を1時間取る時は1/8と書いて それを 累計していけば簡単にできました。 例えば 4/8の次に6/8をとると1と2/8 次に7/8をとると2と1/8と簡単でした。 今年度からは 4時間とって 次に5時間取ると合計9時間となり, 勤務時間が7時間45分なので 年休の累計は1日と1時間15分となると思います。  何かいい計算式がありませんか? (時間を分になおしたり いろいろしましたが,分かりませんでした。)

  • 日報の時間計算を行う関数について

    勤務時間を管理の日報を作成しています。以下の条件をつけて出勤時間と退社時間を記入するだけで1日の総勤務時間を表示してくれる関数をご教示お願いします。 ・9:00出勤で18:00定時退社で15分単位で表示 ・セル(開始)は9:00、(終了)に18:00以降の時間を手入力 ・セル(工数)に関数で総勤務時間を計算 ・9:00から18:00までに1時間15分の休憩をとるため、自動的に差し引いて計算 ・残業は18:15からカウントされるため、18:30以降残業して退社した場合は15分差し引いて計算 ・残業最終時間0:00までとして計算 ・セル(開始)、(終了)に9:00~0:00の15分単位の時間以外を入力はない前提とします ・遅刻、早退による変則時間の入力はない前提とします 【例】 (開始)9:00、(終了)18:00の時は(工数)に7.75 (開始)9:00、(終了)18:15の時は(工数)に7.75 (開始)9:00、(終了)18:30の時は(工数)に8 (開始)9:00、(終了)0:00の時は(工数)に13.5 よろしくお願いします。

  • 年次休暇の取得とのこりの自動計算について

     恐れ入ります。先日年次休暇の計算方法について相談させていただいた者です。  ご回答をいただき、それをヒントに自分で考えられるかと思ったのですが、難しいので申し訳ありませんが、どうぞよろしくお願いします。  添付画像のようなレイアウトを考えています。 ・あらかじめ去年からの繰り越しを入力しておきます。  日、半日、時間、分という単位です。 ・黄色のセルに、現在の取得年休を入れます。 ・自動的に現在の積算年休が表示され、差し引きがわかるようにしたいのです。  また、次の約束があります。 ・1日は7時間45分です。(先日は7時間15分で尋ねましたが、職種により違い、今回は7時間45分をもって1日とする職種の分です) ・半日単位での取得はできますが、半日は時間に換算せず、0.5日という表記にします。  最終的には「15.5日と3時間15分」といった残数表記にします。 ・半日を時分換算しないので、繰り下がりは「日」から「7時間45分」をとってきます。  レイアウトは多少変わっても構わないので、どうぞよろしくお願いします。

  • エクセル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分を超える場合は計算結果の符合を反転するようにしたいです。 わかる方がいらっしゃいましたらよろしくお願いします。

  • 時間を日にできる関数

     休暇の時間を計算する場合、例えば、30日と90時間は時間を8時間で1日に換算すると、41日と2時間になります。エクセルでそのように変換できる関数はないんでしょうか?

  •  エクセルでの経過時間の分計算。

     エクセルでの経過時間の分計算。  よろしくお願いします。セル内に”0900”と入力すれば、”=NOW()”関数式で表示されている現在時間からの経過した分を表示できないか考えています。何か良い方法が分かる方がいれば、よろしくお願いします。 例)      A        B        C 1  10:05:39    0900        65 2 3 A1"=NOW()" B1"0900と入力" C1"経過分時間65を表示"

専門家に質問してみよう