• ベストアンサー

関数の条件式に不足分を補いたいのですが。

ご指導して頂ければ幸いです。      A        B       C 1   太郎     次郎    三郎 2   1000 という状態でB1に名前があればA2の数値に対して5%、名前が無ければ空白という内容にしたくてB2には=IF(B1="","",A2*0.05)と入力し名前があれば結果は50になる様に、そしてC2にはC1に名前が無ければ空白、C1に名前があればA2の数が400以下なら10%、2500以下なら12%、9900以下なら11%、10000以上なら11%の値を入る様にしてC2の結果にはB1に名前があればB2に値が出るので差し引き70の結果を名前が無ければB2に値が無いのでそのまま120と結果を出せる様にしたくて下記の =IF(D2="","",IF(B3<=400,B3*0.1,IF(B3<=2500,B3*0.12,IF(B3<=9900,B3*0.11,IF(B3<=10000,B3*0.11))))) という関数を作成して途中で行き詰まり混乱してる状態です。 助けてください。お願いします。

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

  • ベストアンサー
  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.3

ついでに。 「わかんねえ部分は適当に11%でいいよ、聞くのメドイから」って場合は =IF(C1="","",IF(A2<=400,A2*0.1,IF(A2<=2500,A2*0.12,A2*0.11))-IF(B1="",0,B2)) でOK。なぜなら「400以下でもなく、2500以下でもなかったら、全部11%」になるから。 それと、バカ正直に「B1が空白だったら引かない、B1が空白じゃなかったらB2を引く」って式を1つ1つ書く必要はない。 「B1が空白だったら引かない」は「B1が空白だったら0を引く」と同じ。だったら「B1が空白かどうかで、最後に0またはB2を引く」でOKだ。

isseiboc
質問者

お礼

理屈の後にわかり易い式を教えていただけて光栄です。 私は何でも面倒くさいのは嫌いなので式を考えてるだけでイライラしてたのでこの様な簡潔な内容の式がある事も知らずに今回投稿してchie65536さんに回答いただけた事が嬉しく思います。ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (4)

  • age_momo
  • ベストアンサー率52% (327/622)
回答No.5

#1,4です。途中までできているんですから、それを活用すればいいんですよ。 例えばC行には条件に従って数字を決める式を作り、表示やBを引く引かないを D行でやってみましょう。 A1  太郎 A2  1000 B1  次郎 B2  =IF(B1="","",A2*0.05) C2  =IF(A2<=400,A2*0.1,IF(A2<=2500,A2*0.12,A2*0.11)) D1  三郎 D2  =IF(D1="","",IF(B1="",C2,C2-B2)) こうしておいてC行を隠せばいいと思います。 あるいはC行にはA2にかける数字を表示するというのでも いいと思います。 A1  太郎 A2  1000 B1  次郎 B2  =IF(B1="","",A2*0.05) C2  =IF(A2<=400,0.1,IF(A2<=2500,0.12,0.11)) D1  三郎 D2  =IF(D1="","",IF(B1="",A2*C2,A2*C2-B2)) 本質的には同じことをやっています。

isseiboc
質問者

お礼

ありがとうございます!! お礼が遅くなりました。これはかなり参考になります。しかし、回答してくださる皆さんはいったいどの様に関数式の命令文を把握されてるのですか?私は本屋で関数式の本を見るだけではさっぱり理解できません。やはり自分でいろいろ試して経験する事が大事なんですかね!? 今回も貴重なアドバイスを有難うございました。また、ご縁があればご指導宜しくお願いします。

すると、全ての回答が全文表示されます。
  • age_momo
  • ベストアンサー率52% (327/622)
回答No.4

#1です。一つだけ忠告しておきます。 わざわざ全部に条件式を書いたのは#3さんの方法で書くと C1が""の時にC2が  "" - 0  となってエラーが出るからですよ。 色々な流儀と書いたのもそのことを踏まえた上です。 条件付書式で消したり、作業エリアを設けたりなど 簡単にしたり、見た目を整える方法はありますから。。。 本来、一つのセルで済ませる必要はないです。簡単にするなら メンテや変更がし易くなるよう、1行、間に作業エリアを 設けて隠す方がいいと思いますよ。

isseiboc
質問者

お礼

やはり(本来、一つのセルで済ませる必要はないです。簡単にするなら メンテや変更がし易くなるよう、1行、間に作業エリアを 設けて隠す方がいいと思いますよ。)の方が効率が良いですよね!? イメージでその様に出来たらって思いはしたのですがやはり知識不足の為、方法が見出せずにいた結果がこのザマです。もし、お時間が許す時にサンプルをいただけませんか?ワガママ言って申し訳ありません。

すると、全ての回答が全文表示されます。
  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.2

>A2の数が400以下なら10%、2500以下なら12%、9900以下なら11%、10000以上なら11%の値 まず、数直線の各部が何%になるか整理してみましょう。 負の無限大~400(400含む)=10% 400(400含まず)~2500(2500含む)=12% 2500(2500含まず)~9900(9900含む)=11% 9900(9900含まず)~10000(10000含まず)=なんぼやねん?知るかボケ 10000(10000含む)~正の無限大=11% 数直線では、上記のように、5つの部分に分かれます。 「9900(9900含まず)~10000(10000含まず)」が何%なのか気になりますが、判りませんね。 >途中で行き詰まり混乱してる状態です。 たぶん「9900(9900含まず)~10000(10000含まず)」が何%なのか判らないので、そこで行き詰まったんでしょう。 「書いてない事は関数に出来ない」ので「そこが何%になるか知ってる誰かに聞く必要」があります。 「9900(9900含まず)~10000(10000含まず)」が何%なのか判らない限りは、いくら悩んだって永久に答えは出ないので、こんな所で質問なんかしてないで「そこが何%になるか知ってる誰か」に何%にすれば良いか聞いて来て下さい。 話はそれからです。

isseiboc
質問者

お礼

回答していただいて有難う御座います。 お礼が遅くなり申し訳ありません。 式を教えていただける事も勿論ありがたい事ですがchie65536さんのように理屈を教えてくれるのも教養の無い私には理屈も学べてありがたいです。今後の参考にさせていただきます。ありがとうございました。

すると、全ての回答が全文表示されます。
  • age_momo
  • ベストアンサー率52% (327/622)
回答No.1

落ち着いてくださいね。途中から質問が分け分からなくなっていますよ。 出ている式も文章と合ってないし、後、9900以下も10000以下も同じですね。。。 結局、C2にはB3にデータが出ていれば引き算、なければそのままの数字を 出すような式ということですかね。 色々流儀があると思いますが、質問者さんの式を手直しすると次のように なると思います。 =IF(C1="","",IF(A2<=400,IF(B1="",A2*0.1,A2*0.1-B2),IF(A2<=2500, IF(B1="",A2*0.12,A2*0.12-B2),IF(A2<=9900,IF(B1="",A2*0.11,A2*0.11-B2), IF(A2<=10000,IF(B1="",A2*0.11,A2*0.11-B2))))))

isseiboc
質問者

お礼

丁寧に式を入力してくれて有難う御座います。 お礼が遅くなった事、大変失礼しました。 かなり補足したかったこと、修正できそうです。関数式の理屈が全くわからないままあの様な粗末な内容にもかかわらず回答していただいて本当に有難う御座いました。

すると、全ての回答が全文表示されます。

関連するQ&A