• ベストアンサー

隣接した列の最後の行まで値を入れる方法 エクセルVBA

エクセル2003で、下記のようなプログラムを作っています。 (1,1)の列に数字が入っている所まで、(1,2)の列にVLOOKUPで値を引いてくる。 Cells(1,2).Select Selection.End(xlDown).Select L = Selection.Row ですがこのプログラムでは、(1,2)列の一番下の列番号を取得してしまいます(Cell(65536,2)です)。(1,1)列の最後の数字までを取得できるプログラムにするにはどうしたらいいでしょうか。 図解しますと、   (列)1 2  (行)  1   2 A  2   5 F  3   4 H  4   7 T  5   9 Y  6  7      のような具合です。数字や値に規則性はありません。自分なりにやってみたのですが、どうしても上手くいかないので、ぜひ教えて下さい。よろしくお願いします。

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.4

#2です。 With Worksheets("Sheet1") を With Activesheet にすれば、アクティブシートが対象です。

noname#41451
質問者

お礼

ありがとうございます、やってみます。お礼が遅くなって申し訳ありませんでした。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

マクロの記録の影響かSelectionが無駄に多すぎる。 ーー B列に希望の値を入れておいて、C列に結果を出して、同じかどうか チェックした。 Sub TEST01() d = Range("A65536").End(xlUp).Row MsgBox d For i = 1 To d Range("C" & i).Formula = Application.WorksheetFunction.VLookup(Cells(i, "A"), Range("D1:E9"), 2, False) Next i End Sub 例データ A列  B列   C列   D列  E列 2 A A 1 5 F F 2 A 4 H H 3 7 T T 4 H 9 Y Y 5 F 6 7 T 8 9 Y Range("A65536").End(xlUp).Row は、A65536データ入力最終行の下で適当な行でよい。 A列の最終行だからここがAとする。 B列のケースがわかっていながら、この質問が不思議。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

例えば、下記のようにすると B1からB列のA列最終行と同じ行まで、VLOOKUP関数を代入出来ます。 Sub Test() With Worksheets("Sheet1")   .Range("B1", .Range("A65536").End(xlUp).Offset(0, 1)).Value = _     "=vlookup(A1,$D$1:$E$10,2,false)" End With End Sub

noname#41451
質問者

お礼

ありがとうございます。やってみたら上手くいきました! ただWorksheetsを使わずに実行できる方法がないかと思いまして、試しています。もし案がございましたらご伝授ください。宜しくお願いします。

  • deecyan
  • ベストアンサー率38% (89/233)
回答No.1

A列の一番したをクリックして Ctrl を押して ↑ を押す これを マクロの記録で記録してみれば 下記になります (別に最後でなく 適当なところでもいいけど) Range("A65535").Select Selection.End(xlUp).Select 本当は Userdrange を使ったほうがいいけど、、、、

noname#41451
質問者

お礼

Selection.End(xlUp).Select は試したのですが、(1,2)に戻ってしまうので使えませんでした。L=Selection.RowではA65535までの再計算に時間がかかってしまうので、必要な行までをL=Selection.Rowとして使えないかと思ったのです。どうもありがとうございました。

関連するQ&A

専門家に質問してみよう