プロが教えるわが家の防犯対策術!

こんにちわ。

エクセルで
=IF(A20="一般",IF(Y20>=G20,0,G20-Y20),"")

のような計算式をあるセルにいれています。
この場合A20は一般、Y20は10000,G20は20000とします。

fxボタンを押して関数の計算式を見てみると
「数式の結果」は確かに、正しい「10000」と表示されているにも関わらず、なぜかセル上には「0」としか表示されてません。


セルの書式設定は「標準」になっており、とくにほかの規制?をかけた覚えもないのですが・・・。
この関数式をほかの行にもコピペしてもやはり「0」になってしまいます・・・・。


思い当たるフシがあれば、教えていただきたいですM(__)M

A 回答 (6件)

#2です(笑)



私もまたやってみました(^-^;)

で、hinebotさんが書いてくださった内容でちょっと疑問があったので、そこを解決しながら話を進めます。

>W20は普通残業手当の金額
>X20は深夜残業手当の金額 で
>Y20はW20とX20を足したものです。
>G20は単純に手入力する値です

とありますので、

>Y20も
>=IF(AC20="",0,ROUND(AB20*F20,0))としてだした結果になります。

はY20ではなくて、X20でいいですかね?
(私の方ではX20と判断して話を進めます。じゃないと「=IF(A20="一般",IF(Y20>=G20,0,G20-Y20),""」の式が普通残業深夜残業の合計との計算ではなくなっちゃいますから)


それを踏まえた上で、私の方では
A1に「=IF(A20="一般",IF(Y20>=G20,0,G20-Y20),"") 」
A20に「一般」
E20に「1000」(普通残業単価)
F20に「1200」(深夜残業単価)
G20に「25000」(手入力)
W20に「=IF(AC20="",0,ROUND(AA20*E20,0))」(普通残業手当計算結果 10000)
X20に「=IF(AC20="",0,ROUND(AB20*F20,0))」(深夜残業手当計算結果 12000)
Y20に「=W20+X20」(計算結果 22000)
AA20、AB20共に「10」
AC20に「計算する」

と入力しました。

>つまりYは普通残業手当と深夜残業手当を合計したもの(ちゃんと合計が表示されてます)

が、私の計算だと[22000]になります。

>で、そのYがある基準手当Gより大きかった場合はゼロ、そうでない場合はGからYをマイナス・・・というのが今回の式になります。

は、G20は[25000]で設定しているので、Y20の方が大きいので「G-Y」で[25000-22000]で、私のA1の結果は[3000]になっています。

G20を[20000]にすると、A1は[0]になります。



私の方ではなんだかうまく行っている気がします。
セルの参照の場所をもう一度確認した方がよさそうな気がしますね。
計算とかだとセル位置間違えただけで、全然違う答えになりますから(そして私はよくやります・・・)

そして循環参照ですが、「計算がぐるぐる循環してたり・・」という意味ではなくて、「数式が入力されているセル自体を直接的または間接的に参照している数式」という意味です。

参考URLではエラー確認方法なんかが載ってました。
もし参考になればみてみて下さい。

参考URL:http://www.ksmplus.com/~yukie/excel/excel3.html
    • good
    • 0
この回答へのお礼

何度も何度もありがとうございます!!!!><

違うセルにまったく同じ数式をコピペしたら正しく計算されているのでなぜだろう?!と思い・・・よーーーーくみてみると。。。


「=IF(A20="一般",IF(Y20>=G20,0,G20-Y20),""」

という今回の質問のこの式をいれるセルが
AC20でした!!!!!!!!!!!!!(爆)
つまり「AC20は無視しちゃってください」なんていってましたが、AC20じたいの式なのに、その中でWとXを求める時に「IF(AC20="",」という条件をいれてました・・・
ほんとオオバカの極みです(恥)

循環ってことのことなんですね・・・
お二方のアドバイスであれこれやってるうちに気がつくことができました。本当に感謝ですM(__)M

お礼日時:2004/01/14 15:30

私はもともとこういう式とかを駆使してエクセルを使ったりしたことは実は無くてですね(苦笑)


このサイトでいつも質問が上がっているのを見て、一緒になって悩んで回答しています。
今回は「循環参照」を私としても調べることが出来たので、とても勉強になりました。
逆にありがとうございます。

解決したのであれば、回答を締め切ってください。
お互い・・・結構おっちょこちょいな性格みたいですが、これからもEXCEL頑張って勉強しましょうね(苦笑)
    • good
    • 0
この回答へのお礼

もしかしてレスがつくかな~と思い、
締め切りのばしてました(笑)
それでは~~~ありがとうございました

お礼日時:2004/01/14 16:15

あぁごめんなさい(- -;)


もう間違ってました。#2です。

>は、G20は[25000]で設定しているので、Y20の方が大きいので「G-Y」で[25000-22000]で、私のA1の結果は[3000]になっています。

の「Y20の方が大きいので」は間違ってますね。
「Y20の方が小さいので」ですね。スイマセン・・・
    • good
    • 0

#1です。



>そのYがある基準手当Gより大きかった場合はゼロ、そうでない場合はGからYをマイナス・・・というのが今回の式になります。

なら、単純に計算結果が基準手当てGより大きくなっているだけでは?
(循環参照のエラーは今は出ていないんですよね?)
    • good
    • 0
この回答へのお礼

再度ありがとうございます><
いえ、でていました(笑)@エラー
そこで「OK」を押したら次回はでなくなっただけでした・・・紛らわしいことしてすみません

いえ・・・今回の20の列に入ってる値は
Yは0なので、Gより確実に小さいんです(ノ_・。)
おまけにfxボタンを押すと、ちゃんと数式の結果には正しい値が表示されているんです・・・・

再度試行錯誤してみます!!!
何度も書き込んでいただき、ありがとうございますM(__)M

お礼日時:2004/01/14 13:55

ええと、私もpico2ponさんの数式をコピって同じセルに値を入れて表示させてみました。


どこに数式をコピっても10000になりました。
(でも最初にY20に100000を入れてしまいものすごく悩みましたが(苦笑))

新規作成したシートでやってみても結果は同じでしょうか?
教えてください。
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
実は10000と20000はわかりやすくするための例だったのですが、私も無理やり10000と20000を入力したら、ちゃんと10000がでました。

なので数式は間違ってないみたいです

ちなみに本当の数値では
W20は普通残業手当の金額
X20は深夜残業手当の金額

Y20はW20とX20を足したものです。
G20は単純に手入力する値です

W20は
=IF(AC20="",0,ROUND(AA20*E20,0))で計算したもので、
Y20も
=IF(AC20="",0,ROUND(AB20*F20,0))としてだした結果になります。


EFは普通残業、深夜残業の単価になり、AA,ABは普通残業時間、深夜残業時間になります。(ACは計算するか、しないかの判断基準なので無視してくださって結構です)
つまりYは普通残業手当と深夜残業手当を合計したもの(ちゃんと合計が表示されてます)で、そのYがある基準手当Gより大きかった場合はゼロ、そうでない場合はGからYをマイナス・・・というのが今回の式になります。


なんか複雑でごめんなさい・・・わかりにくければ補足しますので、指摘してください。

お礼日時:2004/01/14 13:18

キーボードのF9キーを押してみてください。



これで、該セルに計算結果が正しく表示されるのであれば
メニューの[ツール]-[オプション]-[計算方法]で、[計算方法]が「手動」に設定されているためと思われます。
このときは、設定を「自動」に変えてください。

F9を押しても、表示が0のままの場合は、別の原因が考えられますので、補足ください。
    • good
    • 0
この回答へのお礼

だめでした(ノ_・。)
計算方式も自動になっておりました~

いろいろごちゃごちゃやってたので忘れてましたが
はじめに
「数式を計算できません。数式内のセル参照は数式の評価結果を参照しており、循環参照を形成しています。」というエラーがでてしまってました。

循環参照?!計算がぐるぐる循環してたり・・・ってことはないと思うのですが・・・

お礼日時:2004/01/14 13:07

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