勤怠の管理表を作成しています。
先日端数処理の方法を質問して、解決したのですが、また分からない所がでてきてしまいました。
数式の検証をお願いします。

給与は15分毎に計算し、00時から深夜です。
出勤時間と退勤時間から通常、深夜、合計の3つの時間を計算しています。
その時間を端数計算する式です。
15分~29分=25、30分~44分=50、45分~59分=75

・02:58~05:30の場合
通常0.0、深夜2.50、合計2.50となります。
でも、現状だと通常2.5、深夜0.0、合計2.5になってしまっています。
出勤時間と退勤時間から深夜時間を計算する式が
if(isblank(退勤時間),"max(退勤時間+(出勤時間>退勤時間)-"24:00",0)-max(退勤時間*退勤時間)-出勤時間、0)-max(出勤時間-"24:00",0)+max(出勤時間-出勤時間)-max(出勤時間-退勤時間,0)*(出勤時間<退勤時間))

if関数なのでごちゃごちゃして分かりづらい式になってしまいました。
FLOOR関数で時間の計算ができるそうですが、通常と、深夜で分けて計算することもできるのでしょうか?
式の問題点や、もっと簡単な関数がありましたら教えてください。
宜しくお願いします。

A 回答 (3件)

提示された式は読みづらかったので見て居ません。



次の様にしてはいかがでしょう。
仮に8時以降の出勤は通常とします。
まず、出勤時間と退勤時間を15分単位で端数処理しましょう。
A1に出勤時間、B1に退勤時間が入っているものとします。

A2に端数処理した出勤時間
=HOUR(A1)+CEILING(MINUTE(A1),15)/60+24*(HOUR(A1)<8)

B2に同じく退勤時間
=HOUR(B1)+FLOOR(MINUTE(B1),15)/60+24*(HOUR(B1)<8)

出勤時間はCEILINGを使って切り上げ、退勤時間はFLOORで切り上げています。
また、日付が変わると判りにくいので1時を25時の様にしています。

ここまでくれば後は簡単
通常の勤務時間:=IF(B2>24,24,B2)-IF(A2>24,24,A2)
深夜の勤務時間:=IF(B2<24,24,B2)-IF(A2<24,24,A2)
    • good
    • 0
この回答へのお礼

出来ました!
人の作った式を真似ただけだったので、意味が理解できていなかったのですが、こんなに簡単な式でよかったんですね。
助かりました。ありがとうございました!

お礼日時:2009/05/15 16:20

No.2です。


タイプミスですが、FLOORで行っているのは「切捨て」です。
失礼しました。
    • good
    • 0

こんにちは



 上記、質問文の式の「if(isblank(退勤時間),」の次に「"」が付いていますが、問題ないですか?
 質問文のタイプミスでしょうか?

この回答への補足

タイプミスです。
”,が抜けてました。退勤時間が空欄なら、空欄にするという式です。
ご指摘ありがとうございます。

補足日時:2009/05/15 14:13
    • good
    • 0

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

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

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

Qwait a minute

「ちょっと待ってください」と言うときに
Wait a minute.と言いますが、Wait for a minute.とforを入れてもOKですか?
電話などでは、Hold the line for a minute.のように言いますが
Wait a minute. と Wait for a minute. は、どう違うのでしょうか。

Aベストアンサー

はじめまして。

どちらも同じ意味で、文法的にも正しい文です。

1.Wait a minute:

このa minuteは「少し」という意味の副詞として使われています。
副詞として、動詞waitを直接修飾しているのです。

2.Wait for a minute:

このa minuteは「瞬間」という意味の名詞として使われています。
期間を表す前置詞forに接続し、for a minuteで「少しの間」という副詞句になり、動詞waitを前置詞句として修飾しているのです。

3.ちなみに、Wait a minuteの方が使われる場合は、forを言う時間も惜しむほどの、緊急の「ちょっと待って」の場合に使われます。もっと緊急なら、A minuteだけで伝わります。

4.また、Just wait for a moment=Just wait a moment =Just a moment「ちょっと待って」も上記と同じ説明になります。意味も、時間を節約したければ、手短なJust a momentを使い、さらにはmomentだけで伝えることも可能です。

以上ご参考までに。

はじめまして。

どちらも同じ意味で、文法的にも正しい文です。

1.Wait a minute:

このa minuteは「少し」という意味の副詞として使われています。
副詞として、動詞waitを直接修飾しているのです。

2.Wait for a minute:

このa minuteは「瞬間」という意味の名詞として使われています。
期間を表す前置詞forに接続し、for a minuteで「少しの間」という副詞句になり、動詞waitを前置詞句として修飾しているのです。

3.ちなみに、Wait a minuteの方が使われる場合は、forを言う時間も...続きを読む

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" にしてください。

Q5 minutes late について

The train was only 5 minutes late. の文で
5 minutes late の部分を5-minute late としてもかまわないのでしょうか? よろしくお願いいたします。

Aベストアンサー

5-minute late はまちがいです。
数値-単位(単数)の形はその後の名詞を修飾する形容詞句の場合に使われます。
5 minutes late ではlateは名詞ではなく形容詞です。

Q条件付き書式 時間 0:00:00の場合

セルの値を差し引いて、時間を出してるのですが
その時間が「0:00」の時、
そのセルを灰色にしたいのですが、
条件付き書式でうまくできません。

「=$A65536="0:00:00"」
「=$A65536="0:00"」
でも、何も変わりません。

時間は、セルの書式設定で「h:mm」にしています。

Aベストアンサー

どれでも。

=$A65536=0
=$A65536-"0:00"=0
=$A65536="0:00"+0
=$A65536="0:00"-0
=$A65536="0:00"*1
=$A65536="0:00"/1
=$A65536="0:00"^1
=$A65536=--"0:00"
=$A65536=n("0:00")
=$A65536=value("0:00")
=$A65536=timevalue("0:00")
=$A65536=sum("0:00")
=$A65536=max("0:00")
=$A65536=min("0:00")
=$A65536=average("0:00")
=$A65536=median("0:00")
=$A65536=imreal("0:00")
=text($A65536,"h:mm")="0:00"
=delta($A65536,"0:00")

最もよく使われているのは多分「*1」だと思いますが、「0:00」という時間に限って言えば、いちばん上の式も十分に分かりやすいです。

なお問題になっているのは、セルに記入されている(あるいは算出されている)値が、数値なのか、それとも文字列なのかという点です。セルに数値があって(あるいは空白で)、それを「0:00」という文字列と比較しようとしても、そのままでは当然、一致しません。Excel にデータ型を自動変換させるため、上のような数式が必要になっています。

したがって、セルの書式は何であっても構いません。書式は見かけを設定するだけのことなので、値とは直接の関係がありません。

どれでも。

=$A65536=0
=$A65536-"0:00"=0
=$A65536="0:00"+0
=$A65536="0:00"-0
=$A65536="0:00"*1
=$A65536="0:00"/1
=$A65536="0:00"^1
=$A65536=--"0:00"
=$A65536=n("0:00")
=$A65536=value("0:00")
=$A65536=timevalue("0:00")
=$A65536=sum("0:00")
=$A65536=max("0:00")
=$A65536=min("0:00")
=$A65536=average("0:00")
=$A65536=median("0:00")
=$A65536=imreal("0:00")
=text($A65536,"h:mm")="0:00"
=delta($A65536,"0:00")

最もよく使われているのは多分「*1」だと思いますが、「0:00」という時間に...続きを読む

Qformatメソッドについて

こんばんは。皆様、今回も宜しくお願い致します<(_ _)>

例えば1という値を渡したら、「001」というように表示させてたくて、下記のようなソースを作成してみました。

import java.text.*;

class Main{
public static void main(String args[]){
DecimalFormat fmt = new DecimalFormt();
fmt.setMaximumIntegerDigits(3);
fmt.setMinimumIntegerDigits(3);
String str = fmt.format(1);
System.out.println(str);
}
}

これを実行すると「001」というように、私の希望通りに表示されます。
でも
String str = fmt.format(1);
の部分を
String str = fmt.format("1");
と変更すると下記のエラーが出力されます。
Exception in thread "main" java.lang.IllegalArgumentException: Cannot format giv
en Object as a Number
at java.text.NumberFormat.format(NumberFormat.java:219)
at java.text.Format.format(Format.java:133)
at Main.main(Main.java:8)

そこでJavaのリファレンスを見て、疑問を持ちました。
リファレンスにはFormatクラスのformatメソッドの引数はオブジェクトになってます。
ということはむしろエラーになったほうが正しくて(String=オブジェクトだから)、普通に実行できたほうがおかしいんじゃないか?(数値=基本型だから)と思ったのです。

どうしてエラーがでるのか、どうしてオブジェクトを渡していないのに普通に実行できるのか、わかる方がいらっしゃったら教えて下さい。
宜しくお願い致します<(_ _)>

こんばんは。皆様、今回も宜しくお願い致します<(_ _)>

例えば1という値を渡したら、「001」というように表示させてたくて、下記のようなソースを作成してみました。

import java.text.*;

class Main{
public static void main(String args[]){
DecimalFormat fmt = new DecimalFormt();
fmt.setMaximumIntegerDigits(3);
fmt.setMinimumIntegerDigits(3);
String str = fmt.format(1);
System.out.println(str);
}
}

これを実行すると「001」というように、私の希望通りに表示されま...続きを読む

Aベストアンサー

 引数がObject型だからといって、あらゆるクラスをフォーマットしなければならないという決まりはありません。したがって、Stringを受け取らなければならない、というわけでもありません。

 引数にどんなクラスを受け取れるのかは、Formatの実装クラスに任されています。実装クラスと書いたのは、Formatは抽象クラスだからです。

 ためしに「new Long(1)」を渡すとどうなるでしょうか。

 さて次に、format(1)のほうです。確かに、Formatクラスには基本型を受け取るformat()メソッドはありません。

 しかし、fmtはFormatではなくてDecimalFormatです。

 DecimalFormatはFormatの派生クラスであるNumberFormat型、さらにその派生クラスです。

 NumberFormat型では、format(long)が定義されています。DecimalFormat型では、これを引き継いでいます。

 したがって、format(1)と書くとformat(long)が適用されるのです。

 引数がObject型だからといって、あらゆるクラスをフォーマットしなければならないという決まりはありません。したがって、Stringを受け取らなければならない、というわけでもありません。

 引数にどんなクラスを受け取れるのかは、Formatの実装クラスに任されています。実装クラスと書いたのは、Formatは抽象クラスだからです。

 ためしに「new Long(1)」を渡すとどうなるでしょうか。

 さて次に、format(1)のほうです。確かに、Formatクラスには基本型を受け取るformat()メソッドはありません。

...続きを読む

Qエクセルでの時刻表示を「時分秒」にし、且つ「0時」「0分」は表示せず、また「0分38秒」は「38秒」

エクセルでの時刻表示を「時分秒」にし、且つ「0時」「0分」は表示せず、また「0分38秒」は「38秒」と表示したい。

エクセル2010を使用しています。

   A     B      C
  終了    開始    経過時間
1 17:38:25  17:37:47  0:00:38
2 10:21:01  10:13:55  0:07:06

このように、終了時間から開始時間を引き、経過時間を出す表を使っていますが、経過時間の表示を
C1 38秒
C2 7分6秒
としたいと考えています。

時間は全てシリアル値で、現在の書式設定は「時刻」の「13:30:55」です。
これをユーザー設定で「m"分"s"秒"」にすると
0分38秒
7分6秒
となりますが、0分の場合は表示したくありません。
ただし、0秒は表示したいと考えています。

色々なワードで検索しましたが、解決策を見付けることが出来ませんでした。
経過時間を私が望む表示にする方法があるのかどうか分かりませんが、何か方法をご存じの方がいらっしゃれば、ご教示願います。

エクセルでの時刻表示を「時分秒」にし、且つ「0時」「0分」は表示せず、また「0分38秒」は「38秒」と表示したい。

エクセル2010を使用しています。

   A     B      C
  終了    開始    経過時間
1 17:38:25  17:37:47  0:00:38
2 10:21:01  10:13:55  0:07:06

このように、終了時間から開始時間を引き、経過時間を出す表を使っていますが、経過時間の表示を
C1 38秒
C2 7分6秒
としたいと考えています。

時間は全てシリアル値で、現在の書式設定は「時刻」...続きを読む

Aベストアンサー

C1に表示された結果を用いてD1に表示させる式を書きますね。
1行目がタイトル行であれば2行目から使ってください。
Cを省略したければDの式のCを参照している部分にCの内容を代入してください。

D1=IF(HOUR(C1)=0,"",C1&"時間")&IF(MINUTE(C1)=0,"",C1&"分")&IF(SECOND(C1)=0,"",C1&"秒")
(1時間以上になることがないのであれば最初の部分は不要ですが)
これにより、時間部分が0でない場合のみ「○時間」、分部分が0でない場合のみ「○分」、秒部分が0でない場合のみ「○秒」と表示されます。
01:01:01であれば1時間1分1秒
00:01:00であれば1分
00:00:01であれば1秒
00:00:00であれば空白
と言った具合で、0でない部分のみが表示されるわけです。

Qjust this minuteの位置?

NHKラジオ英会話講座より
I feel like I just this minute put my head down on my pillow.
たった今、枕の上に頭をのせたばかりだっていう感じなのに。
(質問)
(1)just this minuteは副詞句ですね?
(2)just this minuteは動詞の前に位置していますが、次のように、文末ではおかしいですか? I put my head down on my pillow just this minute. 
  宜しくお願いいたします。以上

Aベストアンサー

こんにちは。いつもご丁寧なお返事を有難うございます。今こちらはランチタイム、ちょうどtommyさんのご質問にRVしましたので、この空き時間を利用して回答しています。

ご質問1:
<just this minuteは副詞句ですね?>

その通りです。

1.ここでは、justとminuteがその「瞬間」「ちょっとした時差」を強調する語として使われています。

2.minuteはsecondなどと同じく、ほんの短い時間を強調するために通常使われる名詞で、「分」「秒」といった具体的な時間では訳しません。

3.justは特に短い時間を強調する時に、よく使われる副詞で、「ほんの」「ついさっき」「~たばかり」という強調を示唆する訳になります。


ご質問2:
<just this minuteは~文末ではおかしいですか?>

文法的には成り立ちますが、この話し手の主観的な感情が伝わりません。

1.ここでjust this minuteがこのような場所に置かれているのには、意味があります。

2.それは、just this minuteが、話し手の「後悔」「残念」「悔しい」といった感情を表すのに使われているということです。

3.「たった今~したばかりなのに」という時差を後悔する主観的な気持ちを、話し手はまず一番に伝えたいのです。

4.それが、このような「前の位置」に置かれている理由です。人は、伝えたい意志・感情をまず先に伝えようとします。

感情を率直に表現するjust this minuteを前に持ってくることで、この話し手は主観的な感情を伝えようとしているのです。

5.この副詞を文末に置いた、ご質問の書き換えを、そのニュアンスどおりに和訳すると
「枕の上に頭をのせたのよ、たった今。」
となり、「たった今」は補足的な情報で、直接的な感情はあまり伝わってきません。

6.Justを使った副詞句は、このように主観によって不定型な場所におかれることがよくあります。
例:
He just now went out.
「彼ならちょうど今出て行ったわよ」

7.その副詞句が特に強調される場合は、動詞が省略されることさえあります。
例:
Wait just a moment.「ちょっと待ってて」
→Just a moment.「ちょっと待って!」

以上ご参考までに。梅雨明けの日本は暑いことと思いますが、夏バテなどしないようにお気をつけ下さい。こちらは22度、こんな低温だと週末に予定しているバーベキューパーティができるか不安です(笑)。

こんにちは。いつもご丁寧なお返事を有難うございます。今こちらはランチタイム、ちょうどtommyさんのご質問にRVしましたので、この空き時間を利用して回答しています。

ご質問1:
<just this minuteは副詞句ですね?>

その通りです。

1.ここでは、justとminuteがその「瞬間」「ちょっとした時差」を強調する語として使われています。

2.minuteはsecondなどと同じく、ほんの短い時間を強調するために通常使われる名詞で、「分」「秒」といった具体的な時間では訳しません。

3.justは特に...続きを読む

Q【Excelの不思議な日付処理の初期値の疑問】日付データの基準日が1900/01/00 0:00なの

【Excelの不思議な日付処理の初期値の疑問】日付データの基準日が1900/01/00 0:00なのは何故ですか?

1900/01/01 0:00が基準日だと思っていましたが、

=now()-now()

にすると1900年1月0日0秒という存在日付の0日が基準日になっていることが分かりました。

日付データの基準日が存在しない日にちなのに計算は正しく表示されます。

どういう仕組みで整合性が取れるのか教えてください。

Aベストアンサー

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13171705193
こっちに有効な回答が最初の最初に入っているのに何故マルチポストをするのやら……

Qminutesについて・・・

minutesの直後に’がついてminutes'となる時があるんですが、どのような意味があって、どんな時に使うんですか??教えてください!

Aベストアンサー

 「~の」などの意味になる所有格を表すのに,アポストロフィエス('s)が用いられますが,複数形につける場合はアポストロフィだけをつけます。
 the students' books「その生徒たちの本」
 
 そして,普通,「~の」を表すのに,人や動物の場合にはアポストロフィエスを用い,無生物の場合には of ~を用います。
 the boy's legs「その男の子の脚」
 the legs of the table「そのテーブルの脚」

 しかし,無生物の場合にも,アポストロフィエスを用いる場合がいくつかあります。

 the world's famous artists「世界的に有名なアーティスト」としたり,特に,新聞などのメディアで,「日本の」を Japan's としたりすることがあります。
 そして,アポストロフィエスで,時間や距離を表す表現がいくつかあります。
 today's newspaper「今日の新聞」
 a day's journey「一日の旅行」

 minutes' については,
 It's ten minutes' walk to the station.「駅まで,歩いて10分です」(walk はここでは「歩行距離,道のり」の意味)
のように用います。

 

 

 「~の」などの意味になる所有格を表すのに,アポストロフィエス('s)が用いられますが,複数形につける場合はアポストロフィだけをつけます。
 the students' books「その生徒たちの本」
 
 そして,普通,「~の」を表すのに,人や動物の場合にはアポストロフィエスを用い,無生物の場合には of ~を用います。
 the boy's legs「その男の子の脚」
 the legs of the table「そのテーブルの脚」

 しかし,無生物の場合にも,アポストロフィエスを用いる場合がいくつかあります。

 the world...続きを読む

Qエクセルにて負の時間を0:00と表示する方法を教えてください

タイトルのとおり、負の時間になった場合に0:00と表示したいのですが、なかなかうまくいきません。

エクセルにて勤務の遅刻・早退の表を作っています。8:30までにこなかった場合に超過時間を表示し(9:00にきた場合には0:30)、17:00より前に帰った場合に過不足時間を表示、という表を作っています。

http://oshiete1.watch.impress.co.jp/qa4183597.html
この過去の質問を参考にやってみましたが・・・うまくいきません;

現在、A1にある元データの数字(例:815)を拾う為に、セルのA3に
=IF(A1="","",TEXT(A1,"0!:00"))
という数式が入れてあります。
A4のセルには
=IF(ISBLANK(A3),"",IF(A3>TIMEVALUE("8:30"),A3-"8:30",0))
という数式が入れてあります。

A4のセルに負の時間であれば0:00と表示、という関数を入れれば出来そうなのですが、試行錯誤してもわかりませんでした。

ご教示いただけたらと思い投稿しました。
宜しくお願いします。

タイトルのとおり、負の時間になった場合に0:00と表示したいのですが、なかなかうまくいきません。

エクセルにて勤務の遅刻・早退の表を作っています。8:30までにこなかった場合に超過時間を表示し(9:00にきた場合には0:30)、17:00より前に帰った場合に過不足時間を表示、という表を作っています。

http://oshiete1.watch.impress.co.jp/qa4183597.html
この過去の質問を参考にやってみましたが・・・うまくいきません;

現在、A1にある元データの数字(例:815)を拾う為に、セルのA3に
=IF(A1="","",T...続きを読む

Aベストアンサー

> =IF(A1="","",TEXT(A1,"0!:00"))
これは時刻じゃなくてただの文字列ですね。これを

> =IF(ISBLANK(A3),"",IF(A3>TIMEVALUE("8:30"),A3-"8:30",0))
この式に入れたら、「A3>TIMEVALUE("8:30")」は常に真です。文字
列は数値より大きいことになってますから。四則演算では勝手に型
を合わせるExcelも、比較演算子では型を意識する必要があります。
というわけでA3を

=if(A1="","",timevalue(text(A1,"0!:00")))
として比較する値同士の型を合わせて下さい。


人気Q&Aランキング

おすすめ情報