- ベストアンサー
隣接した列の最後の行まで値を入れる方法 エクセル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 のような具合です。数字や値に規則性はありません。自分なりにやってみたのですが、どうしても上手くいかないので、ぜひ教えて下さい。よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#2です。 With Worksheets("Sheet1") を With Activesheet にすれば、アクティブシートが対象です。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
マクロの記録の影響か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)
例えば、下記のようにすると 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
お礼
ありがとうございます。やってみたら上手くいきました! ただWorksheetsを使わずに実行できる方法がないかと思いまして、試しています。もし案がございましたらご伝授ください。宜しくお願いします。
- deecyan
- ベストアンサー率38% (89/233)
A列の一番したをクリックして Ctrl を押して ↑ を押す これを マクロの記録で記録してみれば 下記になります (別に最後でなく 適当なところでもいいけど) Range("A65535").Select Selection.End(xlUp).Select 本当は Userdrange を使ったほうがいいけど、、、、
お礼
Selection.End(xlUp).Select は試したのですが、(1,2)に戻ってしまうので使えませんでした。L=Selection.RowではA65535までの再計算に時間がかかってしまうので、必要な行までをL=Selection.Rowとして使えないかと思ったのです。どうもありがとうございました。
お礼
ありがとうございます、やってみます。お礼が遅くなって申し訳ありませんでした。