- ベストアンサー
エクセル関数における対応する範囲
例えば"356"という値について、表から300以上320未満に該当するときは"A"という値、320以上335未満は"B"、335以上360未満は"C"という値を引っ張ってくるにはどのような関数を使えばいいのでしょうか。上記で示した範囲の段階が多くその範囲の間隔が一定ではないので困っています。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
A1に356として IF文関数なら(7つまでネストできます。) =IF(A1<300,"",IF(A1<320,"A",IF(A1<335,"B",IF(A1<360,"C","")))) MATCH関数なら =CHOOSE(MATCH(A1,{-999,300,320,335,360},1),"","A","B","C","") VLOOKUP関数なら -999 スペース 300 A 320 B 335 C 360 スペース 999 スペース という範囲を用意(スペースの部分は半角でスペース) =VLOOKUP(A1,表の範囲(絶対参照),2,TRUE)
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17069)
値の下限が書いてないですが0とすれば また空白があれば、A1に =IF(A1="","",VLOOKUP(A1,$D$1:$E$5,2,TRUE)) を入れて下方向に複写。 D1:E5には 0 X 300 A 320 B 335 C 360 D と入れます。 小数値でもかまいません。 (注意点) (1)第4引き数はTRUE型にする。 (2)表の範囲を示す$D$1:$E$5は絶対参照にすること。 (3)コードA,・・は値区分より右列に持ってくること。
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。maruru01です。 A1にデータがあるとして、 別の場所に表を作成せずに、LOOKUP系関数を使用する場合は、 =HLOOKUP(A1,{300,320,335,360;"A","B","C","D"},2) =VLOOKUP(A1,{300,"A";320,"B";335,"C";360,"D"},2) などと出来ます。 さらに、表示値が「A、B、C・・・」とアルファベット順になっているのなら、 =CHAR(MATCH(C1,{300,320,335,360})+64) などという方法もあります。 さらに、表示値が1文字なら、 =MID("ABCD",MATCH(C1,{300,320,335,360}),1) という方法もあります。 今後、範囲を変更する可能性を考慮して、メンテナンス性からも、どこかに対応表を作成しておいて、VLOOKUP関数を使用するのがいいと思います。
- liluc
- ベストアンサー率47% (47/100)
こんにちは。 IF()関数でやると長くなるがこんな感じになりました。 =IF(AND(A1>=300,A1<320),"A",IF(AND(A1>=320,A1<335),"B",IF(AND(A1>=335,A1<360),"C",))) grumpy_the_dwarfさんのvlookup()関数を使う方法もあるのですね。 とても勉強になりました。
- grumpy_the_dwarf
- ベストアンサー率48% (1628/3337)
vlookup()関数を、最後のパラメータがTRUEで使います。この条件では 300 A 320 B 335 C 360 D という表で310を検索するとAにマッチさせられます。ヘルプに実例が 書いてありますので、参照してください。