- ベストアンサー
エクセルIF文をROUNDUPで短く書き
- エクセルのIF文を使用して、ROUNDUP関数を使って短く書く方法について質問があります。
- シート1のI列O列の値に応じて、シート2のE3に判定結果を表示するセル式を作成したいです。
- Iの値が0の場合はE3を空白表示し、それ以外の場合はO列の値を計算して表示するルールをセル式にしたいです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
I列とO列は500件程度のデータが入っているんですよね。 シート2のE3に判定結果とおっしゃいますが、その判定とは500件のデータ1件1件に対して個別に判定を行うのか、500件すべての合計や平均などから判定を行うのかがまずわかりません。 >40より小さかったら24、 >35より小さかったら21、 >30より小さかったら18 >の調子で5増えるごとに3の倍数で値が減っていき0以上なら0とする、セル式を作成したいです。 具体例と説明が一致していません。 これでは、5「減る」ごとに3の倍数で値が減っているようにしか見えません。 >5<O<0→0 >10<O<-5→3 >15<O<-10→6 >20<O<-15→9 >25<O<-20→12 >30<O<-25→15 >35<O<-30→18 >40<O<-35→21 この条件式も不等号が全部おかしいです。 仮に不等号の向きが逆であっても、下の式が上の式を全て包括する条件になっています。 結局、Oの値が何の場合に何の値を返したいのかわかりません。 そもそもO列に入りうる値の範囲はどのくらいなのでしょうか。 上記条件式を見るに、マイナスの値が入ってくる可能性もあるということですか? やりたいことをもっと整理して、正確に記述してください。 申し訳ないですが、この質問内容では何をしたいのか理解できません。 O1の値が5増える毎に3増えるような値を返すなら =LOOKUP(O1,{0,1,6,11,16,21,26,31,36},{0,3,6,9,12,15,18,21,24}) このような方法もありますが、やりたいことと適合するかはわかりません。 (上記式の場合、O1が0より小さい値の場合はエラー、36以上の値の場合は全て24を返します)
その他の回答 (3)
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
=IF(A1=0,"",MAX(0,ROUNDUP(A1/-5,0)*3-3)) ととらえてみた。
お礼
おそらく、この形が正解に近いかとは思いますが、まだよくわかっていません。ご教授感謝します
- KURUMITO
- ベストアンサー率42% (1835/4283)
シート2のE3セルには次の式を入力してはどうでしょう。 =IF(SUMPRODUCT((Sheet1!I$1:I$1000<>"")*(Sheet1!O$1:O$1000))>0,IF(MOD(SUMPRODUCT((Sheet1!I$1:I$1000<>"")*(Sheet1!O$1:O$1000)),5)=0,(SUMPRODUCT((Sheet1!I$1:I$1000<>"")*(Sheet1!O$1:O$1000))/5+1)*3,ROUNDUP(SUMPRODUCT((Sheet1!I$1:I$1000<>"")*(Sheet1!O$1:O$1000))/5,0)*3),0)
お礼
すぐには理解できないですが、参考にさせていただきます。 感謝します
- DJ-Potato
- ベストアンサー率36% (692/1917)
不等号の向きが全然意味不明なことになってます。 5より大きく0より小さい数はありません。 10より大きく-5より小さい数もありません。 以下同様。 ROUNDUP関数で5ではなく-5で割っているのか、よくかわりません。 この場合、計算結果はすべて負の数で表示されると思いますが。 I列には45以上の値が入ることはないのですか? 40以上で24に落とし込む要素が入っていません。 =IF(A1=0,"",MAX(MIN(ROUNDDOWN(A1/5,0)*3,24),0)) あたりでどうですか?
お礼
初歩的なミスです。やりたいことがまだ整理できていないようです ありがとうございます
お礼
500件のデータ1件1件に対して個別に判定を行います。 不等号で判定する数値にマイナスが抜けています ご指摘のとおり、今のままでは、他者が理解できません。 しっかり整理したいと思います