• 締切済み

vba vlookupについて

VBAで範囲検索をしたくて、 vlookuを使おうと思ったのですが 1000~2000 2001~3000 3001~4000 4001~5000 5001~6000 6001~7000 7001~8000 8001~9000 9001~10000 このような表から 1237 を検索しようとすると失敗してしまいました(・・;) wskyu.Range("D24") = Application.WorksheetFunction.VLookup(kihon, .Range("D:H"), 5, True) このコードでエラーは起きず、 kihonに1237が入っています 1000 2001 ↑がD列です H列は 309 359 406 569 630 680 700 703 904 こんな感じです 思い通りにいけば1237を検索するので当てはまるのは1列目で 309が表示される予定だったのですが 実際やってみると630が表示されました、、、 なぜなのでしょうか そもそもVLOOKUPでこのような検索方法はできないのでしょうか? 補足として 最初はSELECT CASEを使い 1000~2000の間にあれば 309を表示 という風にしていたので 表などが間違っているのではないようです しかしそれだとコードがとても長くなってしまうので VLOOKUPにしようと思いました どうかよろしくお願いします!!

みんなの回答

noname#203218
noname#203218
回答No.3

>上の方法でできると教えていただいたのですが、、、 結果が違っているのですから、人のせいにしないでご自身で理解する事が大事なのでは・・・

lostsymbol
質問者

補足

その質問を見ていただければわかるのですがそこでは写真までついていてうまくいっていたんですよ(・・;) コードは全く同じなのになぜかな~と思いまして、、、

noname#203218
noname#203218
回答No.2

書かれてるコードのでは、抽出したいデータがH1にある場合、D1に検索用1237が存在しないと検索結果は得られません。 VLOOKUP関数を勘違いされてるようですね。 VLOOKUPの解説 VLOOKUP 関数を使用すると、セル範囲の最初の列を検索し、その範囲の同じ行にある任意のセルから値を返すことができます。 検索したいセル範囲の指定、抽出したい列が、検索セル範囲の何番目の列なのか。これが重要ですよね。 見なおせば簡単だと思いますので、頑張って下さい。

lostsymbol
質問者

補足

昔の自分の 「VBA 検索」 という質問で 上の方法でできると教えていただいたのですが、、、

  • FEX2053
  • ベストアンサー率37% (7991/21371)
回答No.1

あの・・・ 1000 309 2000 359 3000 406 という表で =VLOOKUP(1237,A1:B3,2) ってやると 309 が出てきますよ。 359を出したいなら 0    309 1000 359 2000 406 とやらなくちゃ

lostsymbol
質問者

補足

出したいのは309ですが、、、 何故でないのでしょうか コードはあってますよね??