• ベストアンサー

Excel初心者です。数式の入力がわかりません・・・

仕事で資料の作成をしています。 関数が苦手で、どう入力していいのかわからない状態です(;_;) ご指導、お願いいたします。 以下のような表を作成しました。 M14(開始時間)からN14(終了時間)が4時間以上の 場合、O14に1という数字を、4時間未満の場合は0.5と いう数字が自動に出るようにしたいのです。 数式はO14に入力すると思いますが、どのような式を 入力すればいいのでしょうか。 =HOUR(N14-M14) でIFを使用しようかと思っています が、間違いでしょうか。エラーが出ます。 ここで出たO14の数値が1の場合は、AJ12に手動入力する 数値×1.072で出た数字は10円未満切り捨てにした数字(A)、 さらに(A)+AJ8×V14-W14で出た数字をX14に自動的に 入力されるようにしたいのです。 わかりづらいかと思いますが、補足はできますので、ご指導 お願いいたします。

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

  • ベストアンサー
回答No.4

> O14が1の場合は、AJ12×1.072(10円未満切り捨て) > O14が0.5の場合は、AJ11×1.072(10円未満切り捨て) =rounddown(if(O14=1, AJ12, if(O14=0.5, AJ11))*1.072, -1) …(1) というのが一番簡単に思いつくヤリ方。この場合O14が0の時は0になります。すると、 X14: =rounddown(if(O14=1, AJ12, if(O14=0.5, AJ11))*1.072, -1)+AJ8*V14-W14 ですね。 if()関数の入れ子が複雑になるととてもわかりづらいので、(1)のかわりに =rounddown(choose(O14*2, AJ12, AJ11)*1.072, -1) …(2) なんてヤル方法もあります。ただしこれはO14が0の時にエラーになるので、実際には =rounddown(choose(O14*2+1, 0, AJ12, AJ11)*1.072, -1) …(3) のように調整して使います。結構おすすめ。

kobalt
質問者

お礼

再度の回答をありがとうございます。 できました! できました! ・・・が、またまた私の質問漏れのようで、(1)を使うと問題ないのですが、 O14が0の時に、勝手に数字が入ってしまいます。 自分でIFを使ってみましたが、やはり数式エラーが出てしまいます。 (3)が一番良い方法だと思いますが、計算が合わなくなってしまいます。 (1)の方法で、O14が0の場合に0を表示することは可能でしょうか? たびたびのお付き合い、申し訳ありませんが、よろしくお願い いたします。

その他の回答 (3)

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.3

>O列を縦に足して合計を出していたものが、O列に数式を 入れるとマイナスされてしまいます。 数式の合計でマイナスになるのかな? つまり、結果として 1と 0.5しか出ないのに その合計が マイナスに なるというのはおかしいと思います。 まだ、他に記載されてない要因がありそうです。 >また、O14に「時間が未入力の場合はO14に0を自動入力 したい」のですが、どのように数式を入れたら良いのでしょうか。 =IF(HOUR(N14-M14)>4,"1","0.5") を =IF(HOUR(N14-M14)>4,"1","0.5") * IF(N14="",IF(M14="",0,1),1) としたらいいでしょう。

kobalt
質問者

お礼

再度の回答、ありがとうございます。 前半の疑問については、なぜマイナスになってしまった のかは私の力では判明できませんが、今回の回答と#2 さんの回答で問題なく解決しました。 ありがとうございました。 後半の疑問がよりややこしいのですが、回答いただける ようでしたら、 O14が1の場合は、AJ12×1.072(10円未満切り捨て) O14が0.5の場合は、AJ11×1.072(10円未満切り捨て) ここで出た数値を(A)とし、さらに (A)+AJ8×V14-W14 の数値をX14に自動入力されるようにしたいです。 と内容が少し不足していたので補足してこちらに書き ましたので、よろしくお願いいたします。

回答No.2

4時間「以上」なら =if(hour(N14-M14)>=4, 1, 0.5) であるべきですね。 また、N14とM14の両方に時刻が入らないかぎりO14を0にするのなら、 =if(or(N14="", M14=""), 0, if(hour(N14-M14)>=4, 1, 0.5)) となります。 (A)は =if(O14=1, rounddown(AJ12*1.072, -1), "") とするとO14が1にならなければ何も表示しませんし、最後の""を0にすれば0が 表示されます。

kobalt
質問者

補足

早速の回答、ありがとうございます。 おかげさまで前半の私の疑問については、解決しました。 ありがとうございました。 後半の疑問については、私の質問に不足があり、解決して おりません。 再度、こちらに補足ではありませんが、書き直しますので わかりましたら、アドバイスをお願いいたします。 O14が1の場合は、AJ12×1.072(10円未満切り捨て) O14が0.5の場合は、AJ11×1.072(10円未満切り捨て) ここで出た数値を(A)とし、さらに (A)+AJ8×V14-W14 の数値をX14に自動入力されるようにしたいです。 たびたび申し訳ありませんが、ご指導をお願いいたします。

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

=IF(HOUR(N14-M14)>4,"1","0.5") ただし、HOUR(N14-M14)の値が 4とかにならない場合は、それに 合わせて「>4」の値を変更してください。 また N14とM14にどういう値が入ってるかによっても違います。 直接 (N14-M14) だけでいい場合もあるかもしれません。

kobalt
質問者

補足

早速の回答、ありがとうございます。 O14に上記回答の数式を入れたところ、私の疑問は解決 しました。ありがとうございます。 が、またまた疑問が・・・ O列を縦に足して合計を出していたものが、O列に数式を 入れるとマイナスされてしまいます。 また、O14に「時間が未入力の場合はO14に0を自動入力 したい」のですが、どのように数式を入れたら良いのでしょうか。 再度回答いただけますと、助かります。 よろしくお願いいたします。

関連するQ&A