- ベストアンサー
エクセル関数について
初心者です。 VLOOKUPについて、データは全て数値で、検索範囲外の検索値に対しては計算で結果を得るようにしたいのですが、例えば、100から500の検索範囲で1~99と501~の検索値には計算式を対応させたいのですが、検索値のセル番号は変数になるわけで、それをどのようにすればよいのかわかりません。例題URLがあれば教えて下さい。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
vlookupの前に条件式を入れるだけではだめでしょうか? 検索値のあるセルをC1として、 検索範囲をA1:B10、 検査範囲外の計算式をC1*1000、 vlookupの式を入れるセルをD1とします(仮に)。 D1に以下の式を入れれば、 100以上500以下ではvlookupで持ってきた数値がD列に入り、 100未満500超では計算式が入ると思うのですが。 =IF(AND(C1>=100,C1<=500),VLOOKUP(C1,$A$1:$B$10,2,FALSE),C1*1000)
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
この位の自由度はIF文をネストしたりせずに出来ました。 参考まで。 INDIRECT関数の威力。 例えば A列10の時は20(定数) 20の時は30(定数) 30の時はG1の値の2倍に10を足す値(この式は自由になる)(式を使い定数が後者と異なる) 40の時はG2の値の4倍に5を足す値(この式は自由に設定できる))(前者と式も違い、定数も前者と異なる) (検索表) 10 F1 20 F2 30 F3 40 F4 (式その他) F1に20 F2に30 F3に=INDIRECT("G1")*2+10 結果90 F4に=INDIRECT("G2")*4+5 結果205 (値、定数) G1に40 G2に50 (関数式) B1に=INDIRECT(VLOOKUP(A1,$D$1:$E$5,2,FALSE)) B1の式をB2以下に複写する。 (結果) A1:B4は 10 20 20 30 30 90 40 205
補足
解答ありがとうございます。 IF文を使わずにできるのならそれが良いのですが、初心者の理解不足でうまくいきません。 F3とF4が範囲外で計算する部分として、INDIRECTの関数の 中のG1,G2のところを検索値のA列(相対参照)にできれば 良いと思うのですが、だめですか ?
- imogasi
- ベストアンサー率27% (4737/17069)
URLなんて探さずとも普通の問題では。 A列にデータが入るとして、B列に値を求める。 B1に =IF(A1>500,INT(A1/10+10),VLOOKUP(A1,$D$1:$E$6,2,TRUE)) INT(A1/10+10),のところは私が勝手に関数を決めたのですが、A列データとエクセル計算式で表される類のものであれば ここへ入れると良い。 (表)D1:E6 0 10 100 20 200 25 300 30 400 40 500 45 (テストデータ)A1:B19 10 10 99 10 100 20 101 20 199 20 200 25 201 25 299 25 300 30 301 30 399 30 400 40 401 40 499 40 500 45 501 60 600 70 700 80 710 81 A列の未入力セルに対してB列0を表示しないためには もう1段IFをネストする(略)。
お礼
ありがとうございます。 IF文の使用が明解に分かりました。