- 締切済み
IF関数で結果を出したい
IF関数を入れていますが、結果が出ません。 入れ子のせいでしょうか? 元が計算式だからでしょうか? 下の関数ですが、1回は出てきますが、2回以降の回数の結果が出ません。 セルD2に(D1+C2)と計算式を入れています。 セルE2に → =IF(D2<=17,"0回",IF(D2>=18,"1回",IF(D2>=36,"2回",IF(D2>=54,"3回",IF(D2>=72,"4万回"))))) 宜しくお願い致します。
- みんなの回答 (8)
- 専門家の回答
みんなの回答
- HohoPapa
- ベストアンサー率65% (455/693)
ちょっと毛色の違う解を紹介します。 =IF(D2>=72,"4万回",TEXT(QUOTIENT(D2,18),"0回")) なお、 D2セルがマイナスになったときに期待通りかどうか定かではありません。m(_ _)m
- kimamaoyaji
- ベストアンサー率26% (2801/10379)
=IF(D2<=17,"0回",IF(D2>=72,"4万回",IF(D2>=54,"3回",IF(D2>=36,"2回",IF(D2>=18,"1回"))))) という式にすれば良いのでは? D2>=18を先に判断すると36や、54、72は全て18以上ですからそこで完結してしまいますつまり 0回 か 1回 しか答えは出ません
- imogasi
- ベストアンサー率27% (4737/17069)
こういう、おなじ1つのセルの値について、IF関数を3回以上ネストしているのは、初心者丸出しのやり方です。(私は昔から自己流にそう判定している)。 式が長くなって(ネストが深くなって)、面倒だと思いませんか。 定石であるVLOOKUPのTRUE型を使うと、「何回」などの数字や何回などの文字列などが、1つの関数で出せます。 (プログラム言語では、CASE文などがあり、それを使うと、プログラムが、表に似て、読みやすく、わかりやすくなるものです。) 有名な関数の有名な使い方なので、Googleで、「エクセル VLOOKUP関数 TRUE型」で照会して、模擬例を勉強して、本件の式を作って下さい。 https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1036021560など シートのデータとは離れたセル範囲に F列 G列 0 0 17 1 19 2 37 3 55 4 73 5 100 6 ・・ のような「対応表」を作る必要があるが。表(16とか18や36など)は昇順に並べて表を作ります。 === 意味は 0-16 0 17-18 1 19-36 2 37-54 3 55-72 4 73-100 5 式は =VLOOKUP(A1,$F$1:$G$7,2,TRUE) 複数セルを対象とするなら、下方向に式複写。 ーーーー 定義した、該当区間に対応する数や文字列を引っ張ってくれます。 上記の時、境界値の±1の値をどちらの区間に考えるかに注意。テストをしっかりすること。これが面倒ですが。 本件は過去に頻出する質問で、最後まで書く気がしない。特に区間値の境界の値のテストが面倒。 ーー VLOOKUP関数の単行本も複数あり、この関数の講義セミナーさえあるようだ。 VLOOKUP関数は、是非知っておくべき関数だ。FALSE型の方がよくつかわれる けれど。
- bunjii
- ベストアンサー率43% (3589/8249)
>下の関数ですが、1回は出てきますが、2回以降の回数の結果が出ません。 論理の組み立て方に誤りがあります。 IF関数は2択なので多重化するときに論理の誤りが起こり易くなります。 =IF([論理式1],[True1のとき],IF([論理式2],[True2のとき],[False2のとき])) ↓ =IF(D2<=17,"0回",IF(D2>=18,"1回",[False2のとき])) D2が17以下のときは"0回"が返り、D2の値が18以上のときは"1回"が返ります。 D2の値が整数の場合は[False2のとき]に該当する処理はありません。 従って、次の数式と等価です。 =IF(D2<=17,"0回","1回") 提示の数式の代案としては次のようになります。 =IF(D2<18,"0回",IF(D2<36,"1回",IF(D2<54,"2回",IF(D2<72,"3回","4万回")))) または =IF(D2<=17,"0回",IF(D2>=18,IF(D2>=36,IF(D2>=54,IF(D2>=72,"4万回","3回"),"2回"),"1回")))
- potatorooms
- ベストアンサー率28% (3506/12498)
最初に17以下、、次に18以上と指定しているので、残りは17より大きく18より小さい値以外該当しないです。 範囲の狭い方を先に判定させないと望む結果にならないかと。 入れ子の記述順を逆にするといいですよ。 ちなみに関数の判断順は、入れ子の中から優先されるのではなく、前から優先されます。
- okwavey2
- ベストアンサー率15% (251/1593)
条件に該当するものがないから、結果が出ないのだと思います。 =IF(D2<=17,"0回",IF(D2>=18,"1回",IF(D2>=36,"2回",IF(D2>=54,"3回",IF(D2>=72,"4万回"))))) これだと分かりづらいんですかね? この式の通りの順で意味を書くと 1.D2が17以下→0回 2.D2が17以下ではなく18以上→1回 3.D2が17以下ではなく18以上でもなく36以上→2回 2の時点で条件に漏れがある D2が17より大きく18より小さい場合は? 3の時点でこんなことは有り得ない。 この条件に一致するものは存在しない。 こうならないためには、大きい順か小さい順かどちらかの順になるようにします。
- skp026
- ベストアンサー率45% (1010/2238)
=IF(D2<=17,"0回",IF(D2<=35,"1回",IF(D2<=53,"2回",IF(D2<=71,"3回",IF(D2<=72,"4万回"))))) 上記のようにする方法もありますが、 IF(D2>=72,"4万回")こちらの判定から先にやり、 順次に54、36、18を判定する方法もあります。
- 中京区 桑原町(@l4330)
- ベストアンサー率22% (4373/19606)
D2が18以上の場合、たとえ100でもIF(D2>=18,"1回"、これが成立します 100も18以上ですよ このケースなら =if(D2>=72,"4万回",if(D2>=54,"3回",if(D2>=36,"2回",if(D2>=18,"1回","0回")))) この様にします