[[20071111162742]] 『IF関数』(もーもー) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『IF関数』(もーもー)

B1が150以上の場合、素点(207)に応じて80点以上100点以下になるようにする。素点は207点となっているので、素点が207の場合は100点にする。
とあるのですが、

=IF(B1>=180,B1-100,B1/80*100)
を入れると
B1/80*100
の部分が消えてしまいます。

なぜでしょうか?

Excel2003
WindowsXP


 消えてどのようになるのでしょう?
 (seiya)

 消えてどの様になるのかも疑問ですが
 条件として少なくとも「150」「207」と言う数値があるはずなのに
 式の中にどちらの数字も無い と言うのも気になります・・・。

 B1が150以上の場合 と言う条件のはずなのにIF関数の論理式が
 B1が180以上の場合 になっているのも・・・?
 そして、B1が150より下の場合は どうするのですかね?

 >素点(207)に応じて80点以上100点以下になるようにする。
 >素点は207点となっているので、素点が207の場合は100点にする。
 これは例えば
 B1が150(条件内最低)だったら80点、
 B1が207だったら100点とする
 と言う事??

 何かの課題なのですかね?
 まぁ「式は正しい」ってのならその部分には触れませんが・・・。

 (HANA)

すいません。180以上の場合でした。
B1が180以上の場合、素点に応じて80点以上100点以下になるようにする。素点は207点満点となっているので、素点が207点の場合は100点にする。とあるのですが、

=IF(B1>=180, ここまでの部分はわかっているのですが、

次は、 B1-100,B1/207*100) になりますか?

Excel2003 WindowsXP


 それはその文章がそのままどこかに書いてありますか?

 >素点に応じて80点以上100点以下になるようにする。
 ここの意味がよく分かりません。

 B1が180だったら80点、
 B1が207だったら100点とする
 B1が180〜207の間は、同じ傾きで増加する
 ってことですかね?

 B1が180未満の場合は、100を引く と言うのなら
 いま「B1/207*100」が入っている所に「B1-100」でしょうね。
 でも、B1が100点未満の場合 点数がマイナスになりますが
 それでよいのですか?

 もしも もーもーさんが
 「素点に応じて80点以上100点以下になるようにする。」
 ここの一文の意味が分かって居られないのであれば
 私も分かりませんので、その様に仰ってください。
(素点に応じて傾きを決めて・・・って感じはしますが
 それにしても中途半端な点になりそうです。)
 また、他に情報をお持ちであれば その情報を載せてください。
 もーもーさんが「関係ないと思っている」あるいは「分かっているから」
 省略している部分があれば、公開できる範囲で公開してください。

 (HANA)

 もしかして
 「B1が180以上の場合、B1が207の時100点となるようにする」
 と言う話しなら、計算式の部分はB1/207*100 と言う式になって
 これが80点未満となるのはB1が 165.6未満の時で
 B1は180未満にならないから「80点以上」を満たす
 ・・・って事ですかね。

 それなら、IF関数の問題だけですね。
 IF関数は
IF(論理式,真の場合,偽の場合)
 と書きます。
 論理式が満たされたときに「真の場合」
 満たされないときに「偽の場合」に
 それぞれ書いてある事が実行されます。

 今回は
 論理式「B1>=180」B1が180以上が
  満たされたとき
   →真の時 「B1/207*100」
  満たされないとき
   →偽の時 「B1-100」
 としたいのですから、    
=IF(B1>=180,B1-100,B1/207*100)
 この式では、やりたいことが逆に書いてあることになります。

 この式は
 論理式「B1>=180」B1が180以上が
  満たされたとき
   →真の時 「B1-100」
  満たされないとき
   →偽の時 「B1/207*100」
 と言う式になっていますよ。

 (HANA)

     A        B     C
1    NO     素点  修正点
2    01      207
3    02      189
4    03      102
5    04      80

な感じなのですが、それで上の文章で修正点に入れるための式を考えていました。


 それで、この場合修正点(C列)には
 それぞれ何点が入れば良いのですか?

 例えば、C2は「100」が入れば良いのですよね?
 これは、B2が207で 条件に
「素点は207点満点となっているので、素点が207点の場合は100点にする。」
 とありますから。

 例えば、C3は何点になれば良いのですか?
 また、その時にどうやってその点数を導き出したのですか?
 C4,C5に関しても同様です。

 それとも、各セルに何点が入れば良いか、
 もーもーさんはお分かりになって居られないのですかね?

 (HANA)

    A        B     C
1    NO     素点  修正点
2    01      207  100
3    02      189  86
4    03      102  51
5    04      80   40

が入ります。これはもう例題として設定されていました。


 それで、これは何かの課題なのですか?
 もーもーさんのご説明では、素点が180未満の場合
 どの様にするのかご説明がありませんが
 実際はあると思います。
 でないと、C4,C5は何が入るか分からないですよね?

 とりあえずNo1とNo2(素点が180以上)を考えると
 >B1が180〜207の間は、同じ傾きで増加する
 の方の様ですがそれにしても、
 満点が207と言う中途半端なのが非常に気になります。

 差し障りがなければ教えて下さい。
 何の表(問題)なのですか?

 また、180以上の場合の修正点は
 (これが正しいかどうかは分かりませんが)
 (X,Y)=(180,80)と(207,100)の2点を通る直線を求め
 Xの値にNo2の素点「189」を入力するとYが求まりますが
 これを小数点以下切り捨てにすると、No2の修正点「86」
 が現れるようです。(ただし、たまたま かもしれません。)
 ですから、求めた直線Y=aX+bのXの部分をセル参照に変えた物を
 IF関数の中に入れれば良いと思います。

 180未満の場合は、ご説明がないので分かりません。
 それとも、これだけの情報から、C4,C5が求まりますか?

 例えば何かの課題で有った場合 何の課題か分かることは
 答えを求める為にどの手段をとれば良いかのヒントになります。
 また、問題が変わったときに 変わる値があるのか
 (満点207 とか、条件である180と言う数字とか)等でも
 式は少し変わってきたりします。
 (定数なら計算出来ますが、変数なら計算出来ません)
 ただ、現在それらのヒントはもーもーさんしかもって居られません。

 上でも述べましたが
 >また、他に情報をお持ちであれば その情報を載せてください。
 >もーもーさんが「関係ないと思っている」あるいは「分かっているから」
 >省略している部分があれば、公開できる範囲で公開してください。
 宜しく御願いします。

 (HANA)

B1が180以上の場合、素点に応じて80点以上100点以下になるようにする。素点は207点満点となっているので、素点が207点の場合は100点にする。

B1が160点以上180未満の場合、素点に応じて70点以上80点未満にする。

B1が120点以上160未満の場合、素点に応じて60点以上70点未満にする。

B1が120点未満の場合、素点に応じて0点以上60点未満にする。

課題の問題はこれだけありました。素点の部分を上の問題に加工したものを修正点にC列に表示させるという問題でした。満点が207点です。成績を出すために100点満点に直すというものでした。
実際のところは修正点は消えていて、その式を修正点の部分にいれて求める感じです。

  A        B     C
1    NO     素点  修正点
2    01      207  100
3    02      189  86
4    03      102  51
5    04      80   40
6    05      150    75

まだN0と素点の列は続くのですが、手元に資料がないのでここまでしか載せることができません。


 =CHOOSE(SUM(COUNTIF(B1,{"<=207","<180","<160","<120","<0"}))+1,"",
  TRUNC(80+(B1-180)/27*20),TRUNC(B1/2-10),TRUNC(30+B1/4),TRUNC(B1/2),"")
 (ROUGE)

 すっきり出来ませんでしたが、
 =IF(B1>=180,(B1-180)*20/27+80,IF(B1>=160,(B1-160)*9/19+70,IF(B1>=120,(B1-120)*9/39+60,B1*59/119)))
 NO.05の修正点はおかしいのでは?
 >120点以上160未満の場合、素点に応じて60点以上70点未満
 とあるのに75点とは?
 (素)

 180〜207 → 80〜100
=IF(B2>=180,(B2-180)/1.35+80,IF(B2>=160,(B2-160)/2+70,IF(B2>=120,(B2-120)/4+60,B2/2)))
もしくは
=LOOKUP(B2,{0,120,160,180},(B2-{0,120,160,180})/{2,4,2,1.35}+{0,60,70,80})
少数切捨てなら int TRUNC 等で囲えば
(ffff)

 IF関数を使って・・・ と思ってたら、 素さんとほぼ同じだったのでパスです。
 >>>素さんへ
IF関数で高得点から条件分岐させてるので、 9/19 などは 10/20 にしていいのではないでしょうか。

 ちょっと長いけど、これでも計算は出来ますが、対比表があれば(作れば)随分楽になりますね。
=LOOKUP(B2,{0,120,160,180},{0,60,70,80})+
(B2-LOOKUP(B2,{0,120,160,180}))/LOOKUP(B2,{0,120,160,180},{120,40,20,27})*LOOKUP(B2,{0,120,160,180},{60,10,10,20})
※改行してます。
(sin)

 sinさんへ
 ご指摘ありがとうございます。

 >9/19 などは 10/20 にしていいのではないでしょうか。
 でも良いと思いますね。

 式をそのままで書いたもんで。
 y=(59/119)*x
 y={(69-60)/(159-120)}*(x-120)+60
 y={(79-70)/(179-160)}*(x-160)+70
  ・・・
 てな具合です。
 (素)

 =LOOKUP   1回で対応範囲の中で計算すれば短くなりますね。
(ffff)さんの数式
(ROBINちゃん) 

 数式の方は腕自慢の方々がたくさん載せてくださっているので
 私は辞退しますが、最初の御質問である
 >=IF(B1>=180,B1-100,B1/80*100) を入れると B1/80*100 の部分が消えてしまいます。
 に関して、
 「消えてしまう」と言うのは、具体的にどういった事なのですかね?

 例えば、思った計算結果にならない。
     どうやら「B1/80*100」を計算して居ないようだ。
 と言う思考から「消えてしまう」と言う表現をお使いでしたか?

 それとも
 セルに入力出来る文字数には限界があります。
 その限界を超えてしまうため、「B1/80*100」の部分が入力できていない
 と言う事を「消えてしまう」と言う表現で表して居られましたか?
  その場合その時に作った式は、どの様な物だったのでしょうか?

 もしくは、
 入力しようとしたら「式が正しくない」と言われて入力が出来ない。
 と言う事に「消えてしまう」と言う表現をお使いでしたか?

 seiyaさんもお尋ねですが
 消えるとどうなるのですかね?
 まだ同じ現象が起きるのであれば、現状をお知らせ下さい。

 (HANA)

N06は65でした。

消えるというより#VALUEという文字が出てしまうことです。

消えると表現してしまいました。


 たしかに、#VALUE!と言う文字が表示されたら
 「消えた」感じがするかもしれませんね。

 エラー値に関しては、こちらをご覧下さい。
https://www.excel.studio-kazu.jp/mag2/backnumber/mm20040713.html
 「エクセルマイスター」より【エラー#num!など】

 #VALUE!と言うエラー値は、今回の場合おそらく
 「計算しようと思ったけど、値じゃないから計算出来ないよ」
 っていうエクセル君の訴えだと思います。

 もしも「B1/80*100」だけをセルに入力して
 それでも#VALUE!が出るなら、B1セルに数字以外の何かが入っていないか
 確認してみてください。
 例えば数式が入ってる場合で、IF関数を使っており「""」が返されていたり
 した場合、何も入っていない様に見えますが
 やはり、#VALUE!のエラー値が出ると思います。

 単独では上手く行って、IF関数にすると上手く行かないのですかね?

 (HANA)
 


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.