- ベストアンサー
マクロでVLOOKUP関数をつかいたいのですが
エクセルでマクロを使ってVLOOKUP関数みたいなことを したいのですが(文章力が無くてすみません。) sheet1のセルb4を検索値にして、 sheet2のリストb3:C32を範囲に指定します 列番号は 2 検索の型ほ FALSE です。 この値をsheet1のセル"O4"に表示させて、 なおかつ”O4:O33"までオートフィルで数式を入れたいときは どのようにマクロを組めばよいのでしょうか。 ほとんど初心者なのでマクロの記録を使ってやってみたのですが エラーになってしまい、うまくいきません。 他力本願で申し訳ないのですがどなたか詳しい方 ご回答をお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
マクロ実行時のアクティブセルはどこになっていますか? コードを見ると、O4セルがアクティブセルになっていないと、エラーが発生すると思います。 最初に Range("O4").Select として、セルO4をアクティブにしてみてください。 それが確認できると、次はSelectをやめてみましょう。 Range("O4").FormulaR1C1 = "=VLOOKUP(RC[-13],前月データ貼付!R3C2:R32C5,2,0)" Range("O4").AutoFill Destination:=Range("O4:O33"), Type:=xlFillValues この2行ですみます。 セルを指定しているので、アクティブセルを意識しなくても大丈夫です。 更に、セル(例:Range("O4"))の上位オブジェクトのシート名が省略されていることに気がついてください。 ということは、アクティブなシートがマクロの実行対象になります。 シート名で修飾すれば、マクロ実行時に、どのシートがアクティブであろうと同じ結果が得られるようになります。
その他の回答 (2)
- onlyrom
- ベストアンサー率59% (228/384)
アクティブセルが、O4ではないからでしょう。 先頭に、Range("O4").Select を追加してください。 '-------------------------------------------- Sub Macro2() Range("O4").Select '●●追加 ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-13],前月データ貼付!R3C2:R32C5,2,0)" Selection.AutoFill Destination:=Range("O4:O33"), Type:=xlFillValues Range("O4:O33").Select End Sub '-----------------------------------
お礼
うまく表示できました。 どうもありがとうございました!!
- xls88
- ベストアンサー率56% (669/1189)
記録して得られたマクロを拝見できないでしょうか。 コードのどの行で、どのようなエラーが発生するかも、教えてください。
補足
Sub Macro2() ' ' Macro2 Macro ' マクロ記録日 : 2009/2/14 ユーザー名 : C1 ' ' ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-13],前月データ貼付!R3C2:R32C5,2,0)" Selection.AutoFill Destination:=Range("O4:O33"), Type:=xlFillValues Range("O4:O33").Select End Sub そのままコピペしたんですが・・。 sheet2=前月データ貼付けという名前にしています。 実行時エラー1004 RangeクラスのAutoFillメソッドが失敗しました というエラーが出て そのときのアクティブセルに#N/Aのエラーが出ます。 宜しくお願いします。
お礼
ありがとうございました。 無事問題解決できました。 丁寧な説明有難うございます。