• ベストアンサー

excelでのIF関数

excelで表を作っています。 0~29なら「2」、30~59なら「3」、60~79なら「4」、80~100なら「5」という関数を作りたいのですがうまくいきません。 『=IF(A1="","",IF(A1>=85,"A",IF(A1>70,"B",IF(A1>=50,"C",IF(A1>=30,"D","E")))))』というほかの方の質問されているIF関数を参考に作ったのですが…だめでした。 わかる方がいれば教えてください。 vlook関数は使わずに、if関数で作りたいです。 よろしくお願い致します。

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

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

80以上は5,0以下は空白にするのでしたら次の式で良いでしょう。大きい数値からIF関数を使って決めていきます。 =IF(A1="","",IF(A1>=80,5,IF(A1>=60,4,IF(A1>=30,3,IF(A1>=0,2,""))))) しかし、ご質問の数値の範囲を空白にするのでしたら次のようなANDを使った式にすることが必要です。この場合には範囲を一つ一つ決めていくことになりますので大きい数値から決めていく必要もありません。 =IF(A1="","",IF(AND(A1>=0,A1<30),2,IF(AND(A1>=30,A1<60),3,IF(AND(A1>=60,A1<80),4,IF(AND(A1>=80,A1<=100),5,""))))) 式の意味はもしもA1セルが空白の時は空白に、もしもA1の値が0以上で30未満の場合には2を、もしも30以上で60未満の場合には3を・・・・・・もしも80以上で100以下の場合には5にしなさいということになります。

haru1133
質問者

お礼

ありがとうございました。 IF関数を使いたかったので助かりました。

その他の回答 (7)

noname#204879
noname#204879
回答No.8

=IF(A1<0,"tbd",IF(A1<30,2,IF(A1<60,3,IF(A1<80,4,IF(A1<101,5,"tbd")))))

haru1133
質問者

お礼

ご回答ありがとうございました。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.7

参考までに。 >ただ、VLOOKUPは別表がいるのが面倒で使用したくないであれば次の様な関数は駄目でしょうか。 VLOOKUP関数でもLOOKUP関数と同様に配列定数を使用した数式にすれば別表の必要がありません。 すなわち、行方向のデータセットはカンマで、列方向のデータセットはセミコロンで区切った以下のような数式にします。 =VLOOKUP(A1,{0,2;30,3;60,4;80,5},2)

haru1133
質問者

お礼

ご回答ありがとうございます。 別表を作りたくないということ、当たっています。 今後、質問を詳しく書くようにいたします。 セミコロンで区切る方法、初めて知りました。 こんな良い方法があるとは、勉強になりました!! ありがとうございました。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.6

>『=IF(A1="","",IF(A1>=85,"A",IF(A1>70,"B",IF(A1>=50,"C",IF(A1>=30,"D","E")))))』というほかの方の質問されているIF関数を参考に作ったのですが…だめでした。 「だめでした」では問題点がわかりません。 基本的には、例示された数式を、そのまま区切りの数値を代入すれば(必要に応じて条件を1つ削除)、うまくいくと思うのですが、具体的にどのような式を入力したら、どのような部分で問題が出たのか例示されたほうが良いと思います。 >vlook関数は使わずに、if関数で作りたいです。 条件が多くなる複雑な条件では、他の関数を併用するほうがわかりやすいと思います(別表を作成する必要はありません)。 今回のケースなら、例えば配列定数を引数にしたLOOKUP関数を利用して以下のような数式で求めるのが簡単です。 =IF(A1="","",LOOKUP(A1,{0,30,60,80},{2,3,4,5}))

haru1133
質問者

お礼

ご指摘とご回答ありがとうございました。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.5

このような場合、IF関数はネスト構造になり、数式が面倒や変更が難しくなるのでVLOOKUP関数が一般的です。 ただ、VLOOKUPは別表がいるのが面倒で使用したくないであれば次の様な関数は駄目でしょうか。  =LOOKUP(A1,{0,30,60,80},{2,3,4,5}) 因みにこの数式は未入力や100以上は別途考慮して下さい。

haru1133
質問者

お礼

ご回答ありがとうございます。 教えていただいたとおり、VLOOKUP関数が一般的なのでしょうが、別表を使用したくなかったので、VLOOKUP関数を使わずにIF関数での方法を望みました。 質問の時に詳しく書けばよかったと…反省です。 しかし、今後VLOOKUP関数を使用する際に参考にさせていただきます。

  • mzon
  • ベストアンサー率48% (26/54)
回答No.4

最後の80が30の倍数とずれているのでちょっと工夫はいりますが、 『=IF(A1="","",IF(A1>=80,5,INT(A1/30)+2))』 としてやれば計算できますよ、 『INT(A1/30)+2)』で 0~29は「2」、30~59は「3」、60~79は「4」 となるのですが、 80~89が「4」になってしまうので、 『IF(A1>=80,5』で、80以上は5としてます。 また、IF文ですべてを書く場合は 『=IF( AND(0<=A1,A1<=29),2,IF( AND(30<=A1,A1<=59),3,IF( AND(60<=A1,A1<=79),4,IF( AND(80<=A1,A1<=100),5,""))))』 とすればできます。

haru1133
質問者

お礼

考えてくださりありがとうございます。 いろんなやり方があるのですね。 参考になりました。

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

回答No2です。説明文が間違っていましたね。訂正させていただきます。 しかし、ご質問の数値の範囲を空白にするのでしたら次のようなANDを使った式にすることが必要です。⇒ しかし、ご質問の数値の範囲以外を空白にするのでしたら次のようなANDを使った式にすることが必要です。

haru1133
質問者

お礼

わざわざ訂正してくださり、ご親切にありがとうございます。 大変助かりました。

  • lulula
  • ベストアンサー率48% (23/47)
回答No.1

=IF(A1="","",IF(A1>=80,"5",IF(A1>=60,"4",IF(A1>=30,"3",IF(A1>=29,"2","2"))))) 間違っていたらすみません<(_ _)>

haru1133
質問者

お礼

考えてくださりありがとうございます。 参考に致します。

関連するQ&A

  • エクセル関数=IF(AND())で質問します。

     初めまして、よろしくお願いします。 エクセルで     A    B    C    D    E    F 1   1   10   5   3    4  2            ・ 3            ・ このような表にB1、C1、D1三つの値の内一つでもE1より2倍以上の値がある場合にA1の値を抜き出す関数をF1に入力したいのですが、関数式 =IF(AND((B1)>=E1*2),A1,"") までは解るのですが、B1のみではなく、B1からD1までの範囲をどのようにすればいいのか解りません。  解る方、よろしくお願いします。

  • エクセルでif関数を組んだのですが。。。

    エクセルでif関数を使って式を造ったのですが、上手く条件を選択 しません。何がおかしいのか分からない状態でこまっています。  どなたかお詳しい方、教えて下さい。 詳細は添付資料にあります。 a1 20 b1 1 c1 -1 d1 合 e1 19.5 =if((a1-abs(c1))<=e1<=(a1+b1),"合","不合") この式を入れると d1は不合になってしまいます。

  • Excelのif関数を使ったのですがうまくいきません。

    Excelのif関数を使ったのですがうまくいきません。   | A | B | C | D | E ----------------------- 1 | A | A | A | A | 5 2 | B | A | A | B | 4 3 | C | C | A | C | 2 のようにA1~D4のセルに入力されたA,B,C の組み合わせによって E5のセルに1~5の数字を入れていきたいのですがAAAA~CCCCの組み合わせが 15通りあってif関数では入れ子ができません。 AAABもAABAも同じと判断させて1~5の数字を自動的に入力させたいのですが 何かいい方法はないでしょうか。 教えてください。

  • エクセル IF関数 初心者です。。

    A    B   C  D Aさん 9:00  1  9:00 Bさん 10:00 2  9:30 Cさん 11:00 3  10:00 Dさん 12:00 4  10:30 Eさん 9:00  1  9:00 A列氏名 B列時間 C列 B列IF関数 9:00からは1、10時からは2、 11からは3・・・ D列はC列のVLOOKUP関数 1=9:00、2=9:30、3=10:00・・・ そこでお聞きしたいのですが・・ A    B   C  D Aさん 9:00  1  9:00 Bさん 10:00 3  10:00 Cさん 11:00 4  10:30 Dさん 12:00 5  11:00 Eさん 9:00  2  9:30 IF関数を用いて IF(B1>=0.375),1,if(B1>=0.416666666666667),2,IF(B1>=0.458333333333333),3・・・ Eさんが2になるような数式がわかりません。 よろしくお願いします。。

  • エクセルIF関数について

    エクセルIF関数について エクセルのIF関数を利用して、重複するデータを抽出したいと思っています。 エクセルのIF関数を利用したことがないため、別の対応策があれば そちらも教えていただけませんでしょうか・・ 宜しくお願いいたします。 下記のようにA列に入っている1,2,3,4,5があり重複しているものをD列に一つにまとめ重複している1、5の合計分と重複していないものをEに表示させたいと思っています。     A  B     D   E 1  1  123    1  249 2  1  3      2  3 3  1  123    3  345 4  2  3      4  234 5  3  345    5  1665   6  4  234     7  5  555 8  5  555 9  5  555 D1、E1にはどのような関数で対応するのが適しているのでしょうか?

  • Excel IF関数について質問です。

    ExcelのIF関数について質問があります。 B2,C2,D2に入力されている文字を一つずつスペースを設けて、A1に自動的に入力されるような関数を作りたいのですが、どうしてもできません。 B2,C2,D2に文字が入力されていれば、=B2&" "&C2&" "&D2 という関数でこの問題は解決できます。 しかし、もしC2が空白なら、上記関数ですと、スペースが2つできてしまいます。 ●もし空白なら、スペースを作らないというIF関数を作りたく試行錯誤しましたが、できませんでした。 どなたかおわかりの方教えて頂けないでしょうか? よろしくお願い致します。

  • エクセルの関数で2つの条件に合うものを探す。

    エクセルの関数で下記のことをしたいのです。 表(1) T>=0.6  0.6>T>=0.3  0.3>T>=0.15 U<2   A     B       C 2<=U<3  B     B-C     D 3<=U<4  C      C      D 4<=U<6  D     C-D     D 6<=U    E      D      D 別の表(2)に U   T         1.5  0.3         0.9  0.8             5.9  0.13         ・   ・         ・   ・ とあります。 そのためUの値とTの値で表(1)のAからE値を抽出し別の表にAからEを表示したいのです。エクセルの関数(IF,AND,LOOKUP等)を試してみたのですがうまくいきません。できるだけエクセルの関数のみで、よい方法があれば教えてください。よろしくおねがいします。     

  • EXCEL ワイルドカード IF関数

    お世話になっております。 早速ですが質問です。 A1 発注先 B1 単価 C1 1  D1 2  E1 3  とあります。 A1の発注先が山田(C1)、鈴木(D1)、サトウ(E1)だったとき、B1に1か2か3の数字が現れるようにしたいのです。 式は B1に =IF(A1="","",IF(A1="山*",C1,IF(A1="鈴*",D1,IF(A1="サ*",E1,"")))) と作っているのですが、ワイルドカードが認識されません。 質問をする前に色々な質問をざっと読んでみたのですが、 やはりIF関数だとワイルドカードは認識されないのでしょうか? もし認識されないとしたら、他にどんな関数を用いたらよいでしょうか? 回答 宜しくお願いいたしますm(__)m

  • エクセル関数

    エクセル関数 エクセルのVLOOK関数で Sheet1のB2、C2,D2と、Sheet2のB2,C2,D2が同じ値であった場合,sheet2のE2の値をSheet1のE2に入れたい場合どのような式を書けばいいのでしょうか? 何度もやってみたのですが、うまくいかず教えてほしいです。

  • エクセルのif関数のエラー

    エクセルでif関数を使ってデータ処理をしたのですが、上手くいき ません。何がおかしいのかが分からない状態で困っています。 状況  A B C D E 1 : + = ? 関数式 とセルに入力してあるとします。(A1=:,B1=+,C1==,D1=?) 関数式のセルに以下の様に入力しました。 =IF(ISBRANK(D1)=TRUE,E1="",VLOOKUP(D1,$A$1$B$15,2,FALSE)) 目的はVLOOKUPだけではD1が空白の時にE1にNAMEと表示されるのを 避ける事でした。 そうすうとD1にA列の数字を入力すると、それに対するB列をE1に 表示するようになるのですが、D1が空白の時はB1が表示されて しまってます。  また一旦D1に入力した後、D1をデリートして空白にしてもE1には もとの数値がそのまま表示されたままになってしまいます。 文章で表現している分、かなり分かりにくい説明になってしまって いますが、お詳しい方いましたらアドバイスお願い致します。

専門家に質問してみよう