• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルIF文をROUNDUPで短く書きたい)

エクセルIF文を使って値に応じた判定を行う方法

このQ&Aのポイント
  • エクセルのIF文を使って、特定の条件に基づいて値の判定を行いたい場合、ROUNDUP関数を使うことで短く記述することができます。
  • 指定された条件に従って、値が減少していく場合は、ROUNDUP関数を使用して値を切り上げることで、3の倍数で値が減少する仕組みを作成することができます。
  • ただし、記述した式が動作しない場合は、特に条件式の部分に問題がある可能性があります。式の正しい動作を確認するために、個々の条件を確認し、必要に応じて修正する必要があります。

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

  • ベストアンサー
  • don9don9
  • ベストアンサー率47% (299/624)
回答No.6

http://okwave.jp/qa/q7201524.html こちらの質問でNo.2の回答を書いた者です。 新しく質問を投稿しなおすのであれば、前の質問は締め切ってください。 >I列とO列は500件程度のデータが入っているんですよね。 >シート2のE3に判定結果とおっしゃいますが、その判定とは500件のデータ1件1件に対して個別に判定を行うのか、500件すべての合計や平均などから判定を行うのかがまずわかりません。 と書いたのですが、今回の質問を見てもその点は明確ではありませんね。 >=IF('シート1'!I:I=0,“ “, ROUNDUP(シート1!O:O/-5,0)*3) このような式をE3に入力した場合、一見I列やO列全体を参照する式のようにみえますが、実際には式が入っているセルと同じ行の値、つまりI3とO3しか参照しません。 思うような結果が得られていない原因は、そのあたりにある可能性もあります。 それと他の方も指摘されていますが、 ・Oの値がちょうど-5のときは0なのか3なのか? ・Oの値がちょうど-10のときは3なのか6なのか? など、Oが範囲の境目ちょうどの値の場合にどちらになるかが不明瞭です。 こういう場合は、片方を<ではなく≦で表していただいた方が明確になります。

ridi8888
質問者

お礼

OKWAVEで質問したものが、こちらにも表示されたようですね。申し訳ありません 500件のデータ(-40から50までの値がランダムに入っている)1件1件に対して個別に判定を行います 本来同一シート状でOI列の値に応じて、判定結果をR列に表示させたかったのです。 ところが、OI列の値で判定する前に、まずC列(1から14の値がランダムに)の値で判定するために、シートを2つ使うという複雑なことになっていました。 2つの条件に対し、500件のデータ一つ一つを突合させるやり方、また不等号の境界線を明確にさせる やりたいことが整理されていません ご指摘感謝します。

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

その他の回答 (6)

  • don9don9
  • ベストアンサー率47% (299/624)
回答No.7

セルの値の範囲ごとに一定の値を返したい場合は、検索関数が使いやすいと思います。 検索関数については参考URLをご覧ください。 以下、LOOKUP関数を使った方法になります。 シートを一つ追加します。(名前を「シート3」とします) このシート3のA1:B8に、以下のデータを入れます。 A1に-40、B1に21 A2に-35、B2に18 A3に-30、B3に15 A4に-25、B4に12 A5に-20、B5に9 A6に-15、B5に6 A7に-10、B7に3 A8に-5、B8に0 E3の式は =IF(シート1!I:I=0,"", IF(シート1!O:O<-40,24,LOOKUP(シート1!O:O,シート3!A:A,シート3!B:B))) となります。 LOOKUP関数はリストから検索値を昇順に見ていくため、リストの最初の値(この場合はA1セルの値)より小さい値が来ると#N/Aエラーを返します。 ですから、O列の値が-40より小さい場合は24を返し、それ以外の場合はLOOKUP関数でシート3のリストを昇順に見て該当する値を返す、という式にしています。 この場合、O列の値が-5より大きい場合はすべて0を返します。

参考URL:
http://www.eurus.dti.ne.jp/yoneyama/Excel/kansu/vlookup.htm
ridi8888
質問者

お礼

複数のシートを使うこと、Lookup関数を使うとよいことはわかってきました。整理してもう少しシンプルにしていきます。ご教授感謝します。

全文を見る
すると、全ての回答が全文表示されます。
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.5

I列、O列の値の何を対象とするんでしょうか。 500件程度有る列の話しでありながら結果をE3セルと指定しているので、何をしたいのか良く判りません。 ・同じ行のI列、O列が対象ですか?(E3セルならI3、O3) ・O列の合計値または最小値、最大値を見れば良いのですか? 前者でしたら↓こんな感じです。 =IF(シート1!I3="","",-3*ROUNDDOWN(MAX(-40,シート1!O3)/5,0)*(シート1!O3<0)) -5、-10丁度などの時にどうするのか不明でしたので-35<=O<-40 で21となるようにしました。 あと、カテゴリの見直しもお勧めします。

ridi8888
質問者

お礼

同じ行のI列、O列が対象です。 本来この話はC列とOI列2つの条件に対して500件のデータ1件1件、個別に突合させ、判定結果をR列に表示させるというものだったのでした。 それを部分的に切り取ったため、また一つのシートで処理しきれず、2つのシートを使おうとしたために、このように他者にとって意味不明な質問となってしまいました。 まずやりたいことを明確にしたいと思います。 ご指摘感謝します。

全文を見る
すると、全ての回答が全文表示されます。
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.4

難しく考えてしまったようですね。 =IF(Sheet1!I:I=0,"",IF(SUM(Sheet1!I$1:I$1000)<=0,IF(SUM(Sheet1!I$1:I$1000)<-40,24,-1*ROUNDDOWN((INT(SUM(Sheet1!I$1:I$1000))+1)/5,0)*3),""))

ridi8888
質問者

お礼

一つのセル式に関数が4つも入ってるのは見たことがありません。 でもひるんではいけないですね。ご指摘感謝します

全文を見る
すると、全ての回答が全文表示されます。
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

シート2のE3セルには次の式を入力してはどうでしょう。 =IF(SUMPRODUCT((Sheet1!I$1:I$1000<>"")*(Sheet1!O$1:O$1000))<=0,IF(SUMPRODUCT((Sheet1!I$1:I$1000<>"")*(Sheet1!O$1:O$1000))<-40,24,-1*ROUNDDOWN((INT(SUMPRODUCT((Sheet1!I$1:I$1000<>"")*(Sheet1!O$1:O$1000)))+1)/5,0)*3),"") なお、-40より小さかったら24の意味は-41になって24で、-40では21という意味になりますがそれでよいのですね。

ridi8888
質問者

お礼

細かいところまでまだ注意がいってないということがよくわかりました。感謝します

全文を見る
すると、全ての回答が全文表示されます。
  • tomtzr
  • ベストアンサー率41% (7/17)
回答No.2

=IF('シート1'!I:I=0,"",IF('シート1'!O:O<-40,24,(ROUNDDOWN('シート1'!O:O/5,0)*-3)))) で如何でしょうか

ridi8888
質問者

お礼

この形が正解に近いということは理解できて来ました。感謝します

全文を見る
すると、全ての回答が全文表示されます。
  • pentium100
  • ベストアンサー率45% (689/1517)
回答No.1

-40より小さかったら24 -40より大きかったら21 は分かりますが、 「-40ちょうど」の時はどうなるのか書いていませんね。 -40のときは24でいいのかな?(つまり-40以下の時、24) とりあえず仮定して、こう書いてみました。 =IF('シート1'!I:I=0,"",IF('シート1'!O:O>=0,0,ROUNDDOWN('シート1'!O:O/5,0)*-3))

ridi8888
質問者

お礼

じっくり考えて作ってないということがよくわかりました。 整理します

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

関連するQ&A

  • エクセルIF文をROUNDUPで短く書き

    質問があります。 シート1のI列O列の値(データは500件程度あるが)に応じて、シート2のE3 に判定結果を表示するセル式を作成しようとしています。 まずIの値でE3を空白表示するか決めます。その後O列の値が 40より小さかったら24、 35より小さかったら21、 30より小さかったら18 の調子で5増えるごとに3の倍数で値が減っていき0以上なら0とする、セル式を作成したいです。 --------------------------------------------------------- 以下の式は文章で表現したようになっているでしょうか =IF('シート1'!I:I=0,“ “, ROUNDUP(シート1!O/-5,0)*3) --------------------------------------------------------- ----------------------------------------------------------------------------- I=0     →“ “ I=0でなければOの値で判定 0=>O→0 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<40    →24 ----------------------------------------------------------------------

  • エクセル ROUNDUP 組み合わせ

    いつもお世話になります。 エクセル関数初心者です。 ROUNDUPの組み合わせについてご教授くださいませ。 セルE10に、=ROUNDUP(E9*1.1,-2) セルE11に、=ROUNDUP(C15,-3) とあります。 せるE10とセルE11の切り上げた数字を足したいのですが、 SUMをしても、数式は上のバーに表示されるのですが、数字が表示されません。 どのような数式なら切り上げた数字を足せるのでしょうか? ROUNDUPの組み合わせなどでしょうか?

  • エクセルのROUNDUP関数について

    お世話になります。 ExcelのROUNDUP関数についてアドバイスください。 【例】 C3のセルに =ROUNDUP(B3,5) このときB3の値が0.15678423 なら C3のセルは0.15679になる ここまでは何の問題もないのですが B3のセルが 0.1730909… のように小数点第6位の値が0のときも C3のセルが 0.17310 となります。 私としては小数点第6位の値が0のときだけは切り上げず C3のセルが 0.17309 と表示されるようにしたいのですがどうすればよいのでしょか。 いいかえるなら 第6位が1~9なら切り上げ、0のときだけ切り捨てという感じです。 なおセルの書式設定で小数点は第5位まで表示と設定しているので 0.17310 のように 0 が表示されますがこれについては問題ないです。 Excel2000使用です。

  • Excelでfor文とif文の操作をしたいです

    Excelについての質問です。 Excelで、画像のようにシート1のA列にアルファベットと数字のデータがあり(重複はありません)、B列に1~5の数字が入っているとします。 この時、シート2のB列に、シート2のA列で指定したものと一致する、シートAのB列の値を入力したいです。 (この例の場合、上から順に5、4、1です) プログラミング言語でいう、いわゆるfor文とif文の併用で for(i=1;i<4;i++){ for (j=1;j<8;j++){ if(シート1のセルAj==シート2のセルAi){   シート2のセルBiにシート1のセルBjを値を入れる   ループを抜ける } } } というような感じになると思います。(間違っていたら申し訳ないです。) こういった処理は、Excelのマクロで可能でしょうか? また、できればどうすれば実現できるか、教えていただけると助かります。 よろしくお願いいたします。

  • Excel Roundupしたはずが変わってない

    お世話になります。 A1セルに198.865という値が入っています。 B1セルにA1の値を少数第3位で切り上げた数字を表示させるためにROUNDUP(A1,3)と入力しました。 B1には少数第3位で切り上げられた198.87という値が正常に表示されますが、この値をVLOOKUPなどで参照すると198.865になってしまいます。 カーソルを置くと関数のバーのところに表示される数字が198.865のままなのです。 VLOOKUPで参照しても正しい198..87と表示させるようにするにはどうしたらよいでしょうか? Windows XP SP3 Excel2003

  • EXCELのIF関数について

    9セルA1~J1に1~15の数のうちの10個が一つずつ入っており、セルA3~J3にも1~15の数が入っています。またA2~J2には、A~Jまでの英字が入っています      1 2 15 9 7 6 5 4 11 3        A B C D E F G  H  I  J       2 3 5 7 9 10 11 12  13 15   のとき                                          B J G E D    I        C   のようにA3列の値と同じ1列の数字の下の値を            A5 列に表示したいのですが、何度やってもできません。      良い知恵をお持ちの方、よろしくおねがいします。

  • Excel97で、If文をなんとかしたい

    IF文でなんとかなりそうなんですが、IF文を使った事がなくて。 A列   B列   C列    任意の位置のセルD 数式  文字列   数式  文字列 数式  文字列 数式  文字列 こんな表で、Bの文字列の値と、Dのセルの値が一致した時、Aの数式の値(数字)をCの列に表示させ、BとDの文字が一致しない時は、”エラー”を表示させたいんですが、どういう風にすればいいのでしょうか? IF文を使えばいいのでしょうか? どういう風に、数式を立てればいいのかわかりません。 どなたか詳しい方、教えていただけませんか?

  • IF文

    M列に以下をペーストするとN列O列が空欄ときはM列のセルに何も表示されません。 同行のNとOに数値を入力してから削除すると「調査中」が表示されます。 最初からN列O列が空欄ときに「調査中」と表示する書式を教えて頂きたくお願いします。 =IF(N123<>"",N123,IF(O123<>"",O123,"調査中")) EXCEL2007です。

  • エクセルのIF式を教えて下さい!

    いつもお世話になっています。 さて、今回の質問は、エクセルの同じブック内で別々のシートでおこなう質問です。 質問内容 シートAには、A列からD列の表があります。 シートBには、A列B列の表を作成。 シートBのA列にシートAのA列を選択させる。IF式? シートBのB列にシートAの選択したA列と同じ行のD列のセル結果を表示させたい。IF式? 以上の作業させる為のIF式を教えて下さい。 ちなみに、同じシート上での場合のIF式(INDEXとMACTH)の使い方は、分かるのですが、シートが変わった場合が良く分かりません。 宜しくお願い致します。

  • エクセルVBAのコードの書き方を教えてください

    エクセルVBAの初心者です。 下記①-⑲のようなコードを書きたいのですが、どなたかお分かりになる方がいましたら、 ご教示いただけますと幸いです。 ① オートフィルターでシート[list]のA列に"●"がある特定の行だけを以下作業の対象にしたい ② ①で特定した行のE列セルの値を、シート[output]のB9セルにコピペする ③ ①で特定した行のF列セルの値を、シート[output]のB12セルにコピペする ④ ①で特定した行のG列セルの値を、シート[output]のB15セルにコピペする ⑤ ①で特定した行のH列セルの値を、シート[output]のB18セルにコピペする ⑥ ①で特定した行のI列セルの値を、シート[output]のB21セルにコピペする ⑦ ①で特定した行のJ列セルの値を、シート[output]のB24セルにコピペする ⑧ ①で特定した行のK列セルの値を、シート[output]のB27セルにコピペする ⑨ ①で特定した行のL列セルの値を、シート[output]のB30セルにコピペする ⑩ ①で特定した行のM列セルの値を、シート[output]のB33セルにコピペする ⑪ ①で特定した行のN列セルの値を、シート[output]のB36セルにコピペする ⑫ ①で特定した行のO列セルの値を、シート[output]のB39セルにコピペする ⑬ ①で特定した行のP列セルの値を、シート[output]のB42セルにコピペする ⑭ ①で特定した行のQ列セルの値を、シート[output]のB45セルにコピペする ⑮ ①で特定した行のR列セルの値を、シート[output]のB48セルにコピペする ⑯ ①で特定した行のS列セルの値を、シート[output]のB51セルにコピペする ⑰ ①で特定した行のT列セルの値を、シート[output]のB54セルにコピペする ⑱ ①で特定した行のU列セルの値を、シート[output]のB57セルにコピペする ⑲ シート[output]のB3:B59をテキストファイルを呼び出してコピペする ※このとき、上記②-⑱で記述したB9からB57のセルには改行が含まれる場合が  あるため、テキストファイルへのペースト時に""が表示されてしまうが、  もし可能であれば、この""が表示されないようにしたい。