• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルのIF関数で0以上としたい場合の処理方法)

エクセルのIF関数で0以上としたい場合の処理方法

このQ&Aのポイント
  • エクセルのIF関数を使用して、特定の条件で0以上の結果を得る方法について質問されています。
  • 現在の式では、0の部分がうまく機能していないため、正しい結果を得ることができません。
  • 質問者は、0以上の場合は空白になるようにしたいと述べています。

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

  • ベストアンサー
  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.8

回答No.3の追加です。 回答No.1の補足に「指定した数式で使用されている入れ子のレベル数が、現在のファイル形式で許容される上限を超えている為、数式を入力できません」とあり、更に「オフィス2010での使用です。」と言うことですが、対象のファイルはExcel 2003以前と互換のためかと思います。 IF関数のネストが問題であれば回答No.3も回答No.1と同様になりますので、下記のように訂正してください。 =IF(AND(ISNUMBER(D16),D16>=0),IF(D16>=35,6.84,IF(D16>=30,6.85,IF(D16>=25,6.86,IF(D16>=20,6.88,IF(D16>=15,6.9,IF(D16>=10,6.92,IF(D16>=5,6.95,6.98))))))),"")

mgrky571
質問者

お礼

有難う御座います!! 上手くいきました!! 先程同僚とも話していた所ですが、もしかしたらコピーした大元のエクセルが2003以前に作ったからではないか?と話していた所でしたので、仰る通りでした。 皆様の御協力のお蔭で解決出来ましたが、まだまだ勉強不足と痛感致しました。 今後、さらにエクセルを勉強して、より使いこなせるようになりたいと思います。 有難う御座いました。

その他の回答 (8)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.9

 回答No.7です。  前回の私の回答で挙げた方法以外にも次の様なやり方もあります。 =IF(AND(ISNUMBER(D16),D16>=0),IF(D16>=35,6.84,IF(D16>=30,6.85,IF(D16>=25,6.86,IF(D16>=20,6.88,IF(D16>=15,6.9,IF(D16>=10,6.92,IF(D16>=5,6.95,6.98))))))),"") 又は =IF(OR(NOT(ISNUMBER(D16)),D16<0),"",IF(D16<5,6.98,IF(D16<10,6.95,IF(D16<15,6.92,IF(D16<20,6.9,IF(D16<25,6.88,IF(D16<30,6.86,IF(D16<35,6.85,6.84)))))))) 又は =IF(AND(ISNUMBER(D16),D16>=0),IF(D16<35,IF(D16<30,IF(D16<25,IF(D16<20,IF(D16<15,IF(D16<10,IF(D16<5,6.98,6.95),6.92),6.9),6.88),6.86),6.85),6.84),"") 又は =IF(AND(ISNUMBER(D16),D16>=0),IF(D16<5,6.98,IF(D16<10,6.95,IF(D16<15,6.92,IF(D16<20,6.9,IF(D16<25,6.88,IF(D16<30,6.86,IF(D16<35,6.85,6.84))))))),"") 又は =IF(AND(ISNUMBER(D16),D16>=0),IF(D16<35,IF(D16<30,IF(D16<25,IF(D16<20,IF(D16<15,IF(D16<10,IF(D16<5,6.98,6.95),6.92),6.9),6.88),6.86),6.85),6.84),"") 又は =IF(AND(ISNUMBER(D16),D16>=0),LOOKUP(D16,{0,5,10,15,20,25,30,35;6.98,6.95,6.92,6.9,6.88,6.86,6.85,6.84}),"") 又は =IF(AND(ISNUMBER(D16),D16>=0),LOOKUP(D16,{0,5,10,15,20,25,30,35},{6.98,6.95,6.92,6.9,6.88,6.86,6.85,6.84}),"") 又は =IF(OR(NOT(ISNUMBER(D16)),D16<0),"",LOOKUP(D16,{0,5,10,15,20,25,30,35},{6.98,6.95,6.92,6.9,6.88,6.86,6.85,6.84}))

mgrky571
質問者

お礼

御力添え有難う御座いました。 お蔭様で解決に至りました。 未熟と痛感し、より勉強してエクセルを使いこなせるようになろうと思います。 有難う御座いました。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.7

 回答No.1様の関数で >「指定した数式で使用されている入れ子のレベル数が、現在のファイル形式で許容される上限を超えている為、数式を入力できません」の表示が出てしまいます。 という事でしたら、次の様にされては如何でしょうか。 =IF(OR(NOT(ISNUMBER(D16)),D16<0),"",IF(D16>=35,6.84,IF(D16>=30,6.85,IF(D16>=25,6.86,IF(D16>=20,6.88,IF(D16>=15,6.9,IF(D16>=10,6.92,IF(D16>=5,6.95,6.98)))))))) 或は =IF(OR(NOT(ISNUMBER(D16)),D16<0),"",IF(D16<35,IF(D16<30,IF(D16<25,IF(D16<20,IF(D16<15,IF(D16<10,IF(D16<5,6.98,6.95),6.92),6.9),6.88),6.86),6.85),6.84))  それと、御質問の件のような場合、IF関数を入れ子にして用いる以外の方法を使った方が「入れ子のレベル数」を少なくする事が出来ます。  但し、御質問の件のように関数内だけで処理されるのであれば、他の回答にあるようなVLOOKUP関数を使うのではなく、LOOKUP関数を使った方が良いと思います。 =IF(OR(NOT(ISNUMBER(D16)),D16<0),"",LOOKUP(D16,{0,5,10,15,20,25,30,35;6.98,6.95,6.92,6.9,6.88,6.86,6.85,6.84}))

mgrky571
質問者

お礼

御力添え有難う御座いました。 お蔭様で解決に至りました。 未熟と痛感し、より勉強してエクセルを使いこなせるようになろうと思います。 有難う御座いました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.6

私も#4の方と同じ意見です。 エクセルの有名な関数のVLOOKUPのTRUE型を思いつかないのは、エクセルの関数の経験が少ないのと、エクセルの関数の本を通しで読んでないのだと思います。 ネストが3つ以上増えた式なら、もっと増しな式がないか疑問を持つべきです。 ーー 今後のために、(質問者は、多分既定路線(IF関数利用)は改めないだろうから) Googleででも、「エクセル VLOOKUP関数 TRUE型」で照会し、載っている例題を理解し、質問の場合、この関数が使えないか検討してください。区分けの設定やその中間の設定は自由ですから問題ないと思うが区切りの1違いに区分けしないか(以下、以上、未満のようなこと)は注意して表を作る必要があります。その場合は「何々」の「何々」の設定は自由です。

mgrky571
質問者

お礼

御力添え有難う御座いました。 お蔭様で解決に至りました。 未熟と痛感し、より勉強してエクセルを使いこなせるようになろうと思います。 有難う御座いました。

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.5

こんばんは ネストでエラーになるという事はもっと条件が多く式が長いのですね。 だとしたら既出ですがVLookup等を使用した方がいいですね。

mgrky571
質問者

お礼

御力添え有難う御座いました。 お蔭様で解決に至りました。 未熟と痛感し、より勉強してエクセルを使いこなせるようになろうと思います。 有難う御座いました。

回答No.4

> 「指定した数式で使用されている入れ子のレベル数が、 > 現在のファイル形式で許容される上限を超えている為、 > 数式を入力できません」の表示が 横からしゃしゃり出てきてこんなことを言うのもアレですが・・・ VLOOKUP関数について勉強なさると、近道かもしれませんよ。 この場合は「近似一致」のケースかな(図参照)。 ※空白の時に空白を返すのであれば    =IF(D9="","",VLOOKUP(D9,$A$1:$B$8,2,TRUE))  こんな感じで処理すると良いかもです。 ※近似一致の場合、参照される表はキーで昇順にソートされているのが条件です。 IFのネストをそれだけ並べたら見づらいですよ。 「空白なら空白」以前にソコが真っ先に気になりますよね。

mgrky571
質問者

お礼

御力添え有難う御座いました。 お蔭様で解決に至りました。 未熟と痛感し、より勉強してエクセルを使いこなせるようになろうと思います。 有難う御座いました。

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.3

>エクセルのIF関数で0以上としたい場合の処理方法 IF関数の入れ子構造でなければいけませんか? 論理式の部分について比較する順番を変えれば良いと思います。 1番外側(最初のIF関数)で論理式部分を数値であるか否かをチェックされると良いでしょう。 次の数式で目的の結果を得られると思います。 =IF(ISNUMBER(D16),IF(D16>=35,6.84,IF(D16>=30,6.85,IF(D16>=25,6.86,IF(D16>=20,6.88,IF(D16>=15,6.9,IF(D16>=10,6.92,IF(D16>=5,6.95,IF(D16>=0,6.98,"")))))))),"") Excelでは未入力のとき0と等価になります。従って、あなたの数式ではD16が未入力のとき6.98が帰ります。

mgrky571
質問者

お礼

御力添え有難う御座いました。 お蔭様で解決に至りました。 未熟と痛感し、より勉強してエクセルを使いこなせるようになろうと思います。 有難う御座いました。

回答No.2

D16が -10や文字だったらどうするのですか? 同様に""も明示する必要があるでしょうね。 ""は0と見做しますから。

mgrky571
質問者

お礼

御力添え有難う御座いました。 お蔭様で解決に至りました。 未熟と痛感し、より勉強してエクセルを使いこなせるようになろうと思います。 有難う御座いました。

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.1

こんにちは 0は6.98でいいのですよね? =IF(D16="","",IF(D16>=35,6.84,IF(D16>=30,6.85,IF(D16>=25,6.86,IF(D16>=20,6.88,IF(D16>=15,6.9,IF(D16>=10,6.92,IF(D16>=5,6.95,IF(D16>=0,6.98,"")))))))))

mgrky571
質問者

お礼

御力添え有難う御座いました。 お蔭様で解決に至りました。 未熟と痛感し、より勉強してエクセルを使いこなせるようになろうと思います。 有難う御座いました。

mgrky571
質問者

補足

重ね重ね申し訳ありません。 「指定した数式で使用されている入れ子のレベル数が、現在のファイル形式で許容される上限を超えている為、数式を入力できません」の表示が出てしまいます。 このコメントは度々出てきて頭を悩ませられます。 オフィス2010での使用です。 よろしくお願い致します。