• ベストアンサー

マクロでVLOOKUP関数をつかいたいのですが

エクセルでマクロを使ってVLOOKUP関数みたいなことを したいのですが(文章力が無くてすみません。) sheet1のセルb4を検索値にして、 sheet2のリストb3:C32を範囲に指定します 列番号は 2  検索の型ほ FALSE      です。 この値をsheet1のセル"O4"に表示させて、 なおかつ”O4:O33"までオートフィルで数式を入れたいときは どのようにマクロを組めばよいのでしょうか。 ほとんど初心者なのでマクロの記録を使ってやってみたのですが エラーになってしまい、うまくいきません。 他力本願で申し訳ないのですがどなたか詳しい方 ご回答をお願いいたします。

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

  • ベストアンサー
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.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"))の上位オブジェクトのシート名が省略されていることに気がついてください。 ということは、アクティブなシートがマクロの実行対象になります。 シート名で修飾すれば、マクロ実行時に、どのシートがアクティブであろうと同じ結果が得られるようになります。

tariyrt27
質問者

お礼

ありがとうございました。 無事問題解決できました。 丁寧な説明有難うございます。

その他の回答 (2)

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.2

  アクティブセルが、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 '-----------------------------------  

tariyrt27
質問者

お礼

うまく表示できました。 どうもありがとうございました!!

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

記録して得られたマクロを拝見できないでしょうか。 コードのどの行で、どのようなエラーが発生するかも、教えてください。

tariyrt27
質問者

補足

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のエラーが出ます。 宜しくお願いします。

関連するQ&A