• ベストアンサー

IF関数でこれを表現するには

1から40までの数字が入った表1があります。 同じサイズの表2を作り同じ位置にある数字を 1~5はA、6~10はB、11~15はC…という ように数字をアルファベットに置き換えたいのですが どういう式にしたら良いでしょうか? 例 11 4  8     C A B  7 12 1  →  B C A

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

  • ベストアンサー
回答No.2

ifを入れ子にします。 =if(数字の入ったセル<6,"A",if(数字の入ったセル<11,"B",if(・・・)) if文の第3引数にif文を入れていきます。式が長くなりますけど。 私としては、そっちよりvlookup関数の方がおすすめです。 表3の第一列に数字、第二列に対応するアルファベットを書いて 1 A 2 A ・ ・ 6 B 表2の式は =vlookup(数字の入ったセル,表3の範囲,2,false) と書けば済みます。if文より短くシンプルです。

zaczac
質問者

お礼

いろいろやってみましたがIFでは限界でした。 vlookupで簡単にやることにします。 回答ありがとう。

その他の回答 (10)

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

何でこんなタイプの質問をIF関数の問題として質問するのかな。 IF関数が3つ以上(一応の目安)ネストするようなら、他の関数を考えよう。 これなどVLOOKUPのTRUEが型の典型的な問題だ。 思考過程では「もし(IF)何々なら、何々」が頭の中に出てくるが、区分が多い場合は、IF関数でやろうとしてはダメ。 またVLOOKUP関数は非常に有名・有用な関数で、これを知らない人は、エクセル関数を本格的に使ってない人と思う。 例データ A列  B列(関数の結果) 1 A 5 A 6 B 10 B 11 C 15 C 16 D 基準表 D,E列 0 A 6 B 11 C 16 D 以下略 ーー B列B1は=VLOOKUP(A1,$D$1:$E$10,2,TRUE) 下方向に式を複写する。 結果 上記の通り。 LOOKUP関数は3種類有るので、データの並び順によって他の種類のVLOOKUPを使うべきときもある。

zaczac
質問者

お礼

はいはいわかりました

  • hiro-ss16
  • ベストアンサー率42% (18/42)
回答No.10

先程投稿した最後の方で間違いがありました。 正しくは 「E4 はこの式の A4 を B4 にするだけです。」

  • hiro-ss16
  • ベストアンサー率42% (18/42)
回答No.9

例に書かれているように数字を横にならべて行う場合はHLOOKUP関数がよいのではないかと私は思います。   A  B  C  D  E  F  G  H  I・・・・・・・AN  1  1  2  3  4  5  6  7  8  9       40 2  A  A  A A  A  B  B  B  B       H 3 4  11  4  8  =HLOOKUP(A4,表1,2,0) 上記のように A1~AN2 に表を作りこの表を表1と定義します。 4行目に 11  4  8 と入れたとします。D4 に上記の式をいれます。E5 はこの式の A4 を B4 にするだけです。 この考え方でやってみてください。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.8

こんばんは! IF関数は7個までしか重複できなかったと思います。 今回の場合はぎりぎりセーフだと思いますが・・・ CHOOSE関数とINT関数を併用すればかなりの数が対応できると思います。 たぶん29くらいまで? ← はっきり記憶しておりません A列に数値が入っているとしてB列に表示させるとします =IF(A1<=5,"A",CHOOSE(INT((A1-1)/5),"B","C","D","E","F","G","H","I")) そしてオートフィルではどうでしょう? 実際はGまでで良かったとは思いますが・・・

  • hotosys
  • ベストアンサー率67% (97/143)
回答No.7

ifのネスト回数(入れ子回数)の制限や計算式が長くて見づらくなるので、別表を用意してvlookupやlookupを使う方が良いと思います。 別表を用意しないでlookupを使う方法もあります。 =LOOKUP(A1,{1,6,11,16,21,26,31,36},{"A","B","C","D","E","F","G","H"}) 空白の場合を考慮すれば =IF(A1="","",LOOKUP(A1,{1,6,11,16,21,26,31,36},{"A","B","C","D","E","F","G","H"}))

回答No.6

IF関数を使わないで、 =CHOOSE(1+INT((A1-1)/5),"A","B","C","D","E","F","H") もしくは、 =CHAR(1+INT((A1-1)/5)+65) でいけると思います。 セルA1に1~40の数値が入っているとします。

回答No.5

>これ以上値が増えると対応できません。 そうでもないですよ。考え方を変えるとレベル2までですから =IF(A1<=20,IF(A1<=10,IF(A1<=5,"A","B"),IF(A1<=15,"C","D")), IF(A1<=30,IF(A1<=25,"E","F"),IF(A1<=35,"G","H"))) でも、IF関数では限界と考えた方が良いと思います。 参考まで

回答No.4

>1~5はA たとえばチェックするセルがA1とすると =if(A1<6,"A",) >6~10はB なら =if(A1<11,"B",,) てな具合。 この2つを組み合わせると =if(A1<6,"A",if(A1<11,"B",)) で、同じようにCの場合、Dの場合とif文を足してゆく

回答No.3

IF関数で実現するのはギリギリですね。EXCELではIF関数は7レベルまでしかネストできないので、これ以上値が増えると対応できません。 全部描くのは面倒なので略しますが、以下のような感じか。 =IF(AND(元セルの番地>=1,元セルの番地<=5),"A",IF(AND(元セルの番地>=6,元セルの番地<=10),"B",.......) これでは全然スマートじゃないので、例えば =CHAR(INT((元セルの番地-1)/5)+65) なんて式でも良いのではないかと思うのですが、IFである必要はありますか?

zaczac
質問者

お礼

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

noname#77517
noname#77517
回答No.1

色んな式が考えられますが、一番単純に IF関数を使うとすると、以下の式で良いと思います。 =if(A1<6, "A", if(A1<11, "B", if(A1<16, "C", if(A1<21, "D", if(A1<26, "E", if(A1<31, "F", if(A1<36, "G", "H")))))))

関連するQ&A