プロが教える店舗&オフィスのセキュリティ対策術

先日出退勤管理の遅刻時間の数式について教えていただいた者です。
教えていただいた数式を活用して早退時間の数式も入力したのですが14列と16列の出退勤時間を空白にした場合添付画像のように早退時間に「900.0」と表示されてしまいます。
C23には「=IF(C25="午後休",IF($G$5>C17,$G$5-C17,0),IF($D$5>C17,$D$5-C17,0))*1440」という数式を入力しています。
数式が間違っているのか何か設定が間違っているのか見当がつきません。

原因についてコメントいただけたら嬉しいです。
よろしくお願いいたします。

「出退勤管理の早退時間について」の質問画像

質問者からの補足コメント

  • 補足します。
    ちなみに遅刻時間には「=IF(C25="午前休",IF($G$4<C15,C15-$G$4,0),IF($B$5<C15,C15-$B$5,0))*1440」という数式を入力していても900.0は表記されません。

    出勤時刻と退勤時刻を空白にしたときに23行目の早退時間を空白になるように設定したいです。
    親切な方よろしくお願いいたします。

      補足日時:2023/08/22 09:08

A 回答 (4件)

>15行と17行は実際に出退勤表を使用する場合は非表示にするように


>しています。

ということなので、C15、C17が実際にどのよう表示になっているのかご質問者自身もよくわかっていないのではないかと推測しました。

そこで、C23セルに

=IF(C17=0,"",IF(C25="午後休",IF($G$5>C17,$G$5-C17,0),IF($D$5>C17,$D$5-C17,0))*1440)・・・①

あるいは、

=IF(C17=0,0,IF(C25="午後休",IF($G$5>C17,$G$5-C17,0),IF($D$5>C17,$D$5-C17,0))*1440)・・・②

という数式をいれてみてください。

①はC16が空白ならC23に空白を、②はC16が空白ならC23に0を返す意図で作成しました。
    • good
    • 0
この回答へのお礼

goomaniaさん
またまた助けられました。
私自身がわかっていない状態の説明をくみ取って
的確な回答をくださり本当に感謝です!!

また質問を投稿することもあると思いますが
もう少し伝わるように質問を考えようと思います。

本当にありがとうございました!!!

お礼日時:2023/08/23 13:07

前回のご質問


https://oshiete.goo.ne.jp/qa/13557834.html
でC22セルの数式として
=IF(C25="午前休",IF($G$4<C15,C15-$G$4,0),IF($B$5<C15,C15-$B$5,0))*1440
という数式を回答した者です。

上記数式はあくまでも、ご質問者が掲出された数式を分単位での計算にするだけのものです。
従って、C15セル、C17セル、C25セルの状況についての判断は一切しておりません。

例えば、C15セルが空白の場合、C22も空白、C17セルが空白の場合、C23セルも空白という条件をつけるなら、C22セルの数式は

=IF(C15="","",IF(C25="午前休",IF($G$4<C15,C15-$G$4,0),IF($B$5<C15,C15-$B$5,0))*1440)・・・①

C23セルの数式は

=IF(C17="","",IF(C25="午後休",IF($G$5>C17,$G$5-C17,0),IF($D$5>C17,$D$5-C17,0))*1440)・・・②

となります。

但し、②は、C17セルが空白以外の場合、ご質問者の掲出された数式は正しい結果になっているという前提です。
そもそも空白以外の時、正しい結果になっていないのに、空白の場合のみ修正しても意味がありません。

ご質問者の数式を拝見する限り、C17セルが空白でない場合も正しい結果になるようには見えないのですが、いかかでしょうか?

また、C17に
=(TIME(INT(C16/100),C16-INT(C16/100)*100,0))
という数式を入れているとのことですが、これは時刻を「:」抜き入力で、例えば「10:15」を「1015」と入力している場合に時刻に変換する数式です。

前回の投稿を見ると、C16は「10:00」のように表記されており、変換する意味がないように見えますし、逆にこの数式で変換すると、全て「0:00」になってしまうのではないかと思います。

あるいは、表示形式を「#":"#0」にして「1015」と入力すると「10:15」に見せているということでしょうか?

このように疑問が多数ある状態では、ご質問者の表のセルの内容が不明ですし、どのような結果を導きたいのかよく判りませんので回答のしようがありません。
    • good
    • 0
この回答へのお礼

goomaniaさん
毎回お世話になります。
前回の質問で教えていただいた数式を活用して早退時間を自分で考えようとしましたがなかなか難しく・・
何度もすみませんが頼りにしております。

C17セルが空白以外の場合は正しい結果になるので空白の時が900になってしまうので悩んでいます。
教えていただいた上記の②の数式でもやはり900が表示されてしまいます。

時刻についてですが14行、16行に入力する際に数字4桁で入力できるようにユーザー定義の「0":"00」に設定しています。
また15行と17行は実際に出退勤表を使用する場合は非表示にするようにしています。
説明が下手で伝わらなかったらすみません・・・

お礼日時:2023/08/22 13:22

こんにちは



>14列と16列の出退勤時間を空白にした場合添付画像のように
>早退時間に「900.0」と表示されてしまいます。
一般的に、縦に連続するセルを「列」、横に連続するセルを「行」と言います。
ご質問の「14列と16列」は「14行目と16行目」という意味ですよね?

また、ご提示の計算式
>=IF(C25="午後休",IF($G$5>C17,$G$5-C17,0),IF($D$5>C17,$D$5-C17,0))*1440
では、14行目も16行目も参照していませんので、ご質問との直接の因果関係はありません。
想像するところ、C17セルにC16(または、C14)セルを参照する式が設定されているのではないかと思いますが、内容が不明なのでよくわかりません。

通常、計算式で参照するセルが空白の場合、0と見做して計算されてしまうことが多いので、(実際のC17セルの内容がわかりませんけれど)空白になっていて、0として計算されているのではないでしょうか?


そのような場合にどうしたいのかについても記載が無いのでわかりませんけれど、ご提示の数式側で対処したいのであれば、C17セルが空白の場合の処理を付け加えれば宜しいでしょう。
例えば、
 =IF(C17="","空白の場合に表示したい内容", "現在の計算式")
のようにしておけば宜しいのではないかと想像します。
    • good
    • 0
この回答へのお礼

前回の質問に引き続き
回答してくださってありがとうございます!!

>「14列と16列」は「14行目と16行目」という意味?
おっしゃる通りで行の間違いです。

>C17セルにC16(または、C14)セルを参照する式が設定されているのか?
これもおっしゃる通りでC17に「=(TIME(INT(C16/100),C16-INT(C16/100)*100,0))」という式を設定しています。

わかりやすく表記できてなくてすみません。
補足にも書きましたが出勤時間と退勤時間を空白にした場合に早退時間も空白になるように設定したいです。

お礼日時:2023/08/22 09:56

C23の値は、



C25に"午後休"が無いから、
IF($D$5>C17,$D$5-C17,0)に1440かけた値。

D5が15:00
C17が空白なので0
IFの$D$5>C17が真になるから、
$D$5-C17に1440かけた値。

15:00は15/24なので、
15/24×1440=900
で、計算式通り。


> 数式が間違っているのか何か設定が間違っているのか見当がつきません。

自分も、何がどうなった時に、いくつになって欲しいのか?分からないので見当つかない。
    • good
    • 0
この回答へのお礼

数式も教えていただいたものだったので自分で深く
理解できていなくてわかりやすく教えて下さり理解できました。
回答してくださってありがとうございます!!

わかりやすく表記できてなくてすみません。
補足にも書きましたが出勤時間と退勤時間を空白にした場合に早退時間も空白になるように設定したいです。

お礼日時:2023/08/22 09:58

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A