• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル 複雑なIF関数を避けたいのですが…)

エクセルで複雑なIF関数を回避する方法

このQ&Aのポイント
  • エクセルで一定のルールに基づいて数値を別のセルに返す方法を紹介します。
  • 特定の範囲内の数値を切り捨てや切り上げしながら処理するために、IF関数やCEILING関数を使用する方法がありますが、一つのセルでは制約があるため複雑なIF関数を避ける方法を考えます。
  • 簡単なセルの計算と条件分岐を組み合わせて、シンプルな方法で数値を処理することができます。詳細な方法は質問文章の例を参考にしてください。

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

A1セルに数値が有るとして次のような式になりますね。 =IF(A1<10,"",IF(LEN(A1)<5,CEILING(A1,50),ROUNDUP(A1,IF(LEN(A1)<6,-2,IF(LEN(A1)<8,-3,-4)))))

smartphone
質問者

お礼

遅くなりましたが、どうもありがとうございました。 一発で解決しました。 今まで悩んでいたのが嘘のようです。

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

その他の回答 (4)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.5

ご相談に書かれたことを丁寧に読むと  10000未満で「1の位を切り捨てて」50に切り上げ  10000-1,000,000で「上位4桁」に切り上げ  1,000,0000-で「上位5桁」に切り上げ のように見えますが =CEILING(ROUNDDOWN(A1,-1),IF(A1<10000,50,10^INT(LOG(A1)-IF(A1>=1000000,4,3)))) ぐらいでしょうか。

smartphone
質問者

お礼

どうもありがとうございました。 解決いたしました。 見方を変えればここまでシンプルなんでびっくりです。

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

こんにちは! 質問にある ●100,000以上1,000,000未満【1の位】切り捨て【10の位】切り上げ【100の位】切り上げ【1000以上の位】そのまま の意味がイマイチよく判らないのですが・・・ 123445 → 123500 → 124000 という結果? これではあまりに誤差が多すぎる感じがしますので、勝手に 10000未満は1の位の5ずつの切り上げ、 それ以外は 1万以上は1の位を切り上げ、十までの表示 10万以上は10の位を切り上げ、百までの表示 100万以上は100の位を切り上げ、千までの表示 1000万以上は100の位を切り上げ、万までの表示 という判断でやってみました。 A1セルに数値を入力するとして、 表示したいセルに =IF(A1<10000,ROUNDUP(A1*2,-1)/2,ROUNDUP(A1,4-LEN(A1))) ※ お示しの数式では数値の桁数はV1セルのように見受けられますので そうであれば、数式内の最後部分 ROUNDUP(A1,4-LEN(A1) を >ROUNDUP(A1,4-LEN(V1) に変更して試してみてください。 一発で解決とはいかないと思いますが、 他の回答者さんのたたき台になりますかね?m(_ _)m

smartphone
質問者

お礼

どうもありがとうございました。 無事解決しました。

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

私が見たところ、提示された条件は以下のように条件をまとめられる気がします。 ・10,000以上の場合については、頭から4桁目を切り上げ、それ以下は0  (100,000以上1,000,000未満の場合に、【10の位】切り上げとなってますが、   ここは切り捨てではないでしょうか?) ・1以上10,000未満の場合を2つに分け、  →10未満なら0  →10以上なら、1の位を切り捨てた上で、50を基準として、その倍数になるように大きい方にまとめる このように理解しました。 上記の条件だと、IF関数を2回使えばできます。 =IF(LEN(V1)>4,ROUNDUP(TRUNC(V1/10^(LEN(V1)-4)),-1)*10^(LEN(V1)-4),IF(LEN(V1)>1,CEILING(ROUNDDOWN(V1,-1),50),0)) LEN関数で桁数を算出。10,000以上ということは、長さが4より大きいので「>4」にてIF条件とする。 頭から4桁取り出すために、(桁数-4)×10の数字で割り算し、整数部分だけを取り出すTRUNC関数を使う。 出てきた数字の1の位を切り上げし、再度(桁数-4)×10を掛ける。 桁数が4以下、すなわち10,000未満の数字の内、10以上のものを取り出すため、再度IF関数で桁数>1とする。 10以上のものは、1の位を切り捨て(ROUNDDOWN)、CEILING関数で50の倍数にする。 上記の条件に当てはまらない1桁の数字の場合は、0とする。

smartphone
質問者

お礼

説明不足でもうしわけありませんでした。 解決しました。 引っかかったのど元の骨が取れた気分です。 どうもありがとうございました。

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

各処理結果を別の各列セルで行っておいて、入力した数値の条件で処理結果の列データを選択してはいかがでしょう。

smartphone
質問者

お礼

どうもありがとうございました。 無事解決しました。

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

関連するQ&A