dポイントプレゼントキャンペーン実施中!

エクセルでマクロを使ってVLOOKUP関数みたいなことを
したいのですが(文章力が無くてすみません。)

sheet1のセルb4を検索値にして、
sheet2のリストb3:C32を範囲に指定します
列番号は 2 
検索の型ほ FALSE      です。

この値をsheet1のセル"O4"に表示させて、
なおかつ”O4:O33"までオートフィルで数式を入れたいときは
どのようにマクロを組めばよいのでしょうか。

ほとんど初心者なのでマクロの記録を使ってやってみたのですが
エラーになってしまい、うまくいきません。
他力本願で申し訳ないのですがどなたか詳しい方
ご回答をお願いいたします。

A 回答 (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"))の上位オブジェクトのシート名が省略されていることに気がついてください。
ということは、アクティブなシートがマクロの実行対象になります。
シート名で修飾すれば、マクロ実行時に、どのシートがアクティブであろうと同じ結果が得られるようになります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/02/14 15:45

 


アクティブセルが、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
'-----------------------------------
 
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/02/14 15:45

記録して得られたマクロを拝見できないでしょうか。


コードのどの行で、どのようなエラーが発生するかも、教えてください。

この回答への補足

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のエラーが出ます。

宜しくお願いします。

補足日時:2009/02/14 14:23
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!