Q&A

【Q&A】007
マイナス表示の時間を計算に使うと#VALUEエラーになる


(約文字)

2019-06-03

「みんなのエクセル」に頂いたご質問と回答

「みんなのエクセル」に頂いたご質問と回答

この記事では「みんなのエクセル」に頂いたご質問と回答を公開しています。Q&A形式で「質問者様」と「管理者ヒサ」とのやり取りを、ほぼそのままの状態で見れるようにしています。 他の方が困っている事と、それに対する解決方法を読んで学ぶことで、エクセルのスキルアップにつながる場合がとても多いので、公開させていただいています。

Question

下記についてご教授いただければと存じます。

[C31セル]出勤
[D31セル]8:20
[E31セル]18:00
[F31セル]?
[G31セル]=CEILING($D31,"00:30")
[H31セル]=FLOOR($E31,"00:15")
[I31セル]=IF($F31="?","00:45",IF($F31="??","01:00","00:00"))
[J31セル]=IF($C31="出勤","7:45",0)
[K31セル]=TEXT(ABS($H31-$G31-$I31),IF($G31>$H31,"-hh:mm","hh:mm"))
[L31セル]=TEXT(ABS($K31-$J31),IF("07:45">K31,"-hh:mm","hh:mm"))

とすると、Lがヴァリューになってしまいます。 ここに、計算された結果のマイナスの時間を表示したいのですが、うまくいきません。 日付も同じシートに入れているので、1904年設定は使いたくありません。

何卒ご教示願います。

Answer

現状を把握する

まず、セルK31に表示される値は、TEXT関数の答えですので、”文字列”です。

次に、セルL31でABS関数の引数にK31の値(文字列)を指定しています。

エラーが発生した原因

ABS関数の引数には”数値”を指定する決まりがあるので、#VALUEエラーが表示されています。

解決の方法

エクセルのオプション設定で”1904年から計算する”が一般的ですがNGとのことですので、他の方法をご提案します。

=TEXT(ABS(($H31-$G31-$I31)-$J31),IF("07:45">($H31-$G31-$I31),"-hh:mm","hh:mm"))

解決方法の解説

セルK31はH31-G31-I31の結果ですので、セルL31で指定している式中のK31を(H31-G31-I31)に置き換えました。

#VALUEエラーは回避され、一応答えらしき値が出ましたので、ご回答とさせていただきたいと思います。

(答えは”01:00”となりましたが、これが意図された答えかは、こちらでは判りかねます)

大変お忙しいところ恐れ入ります。ご確認及びご回答をお待ちしております。

Result

まだご連絡を頂戴しておりません。

この記事は以上です。最後までご覧頂き、ありがとうございました。