- ベストアンサー
Excelマクロで質問です。
Excelマクロで質問です。 Sheet1にデータが入力されていて(ここでは100行入力されているとします)、 Sheet2のA2からE2に数式が入力されています。 ↓ この数式をSheet1のA列に入力されているデータ行数分プラス1(ここでは100+1) Sheet2のA3以降(A3からA103)にコピペするマクロを教えていただけないでしょうか。 100は、毎回変化します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こういうことかな? Sub test01() Dim myRow As Long '変数宣言 myRow = Sheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Offset(1).Row '行数取得 Sheets("Sheet2").Range("A2:E2").Copy Sheets("Sheet2").Range("A2:E2").Offset(1).Resize(myRow, 5) '式の転記 End Sub
その他の回答 (3)
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! こんな感じでも良いのですかね? Sub test() Dim i As Long Dim ws1, ws2 As Worksheet Set ws1 = Worksheets("sheet1") Set ws2 = Worksheets("sheet2") For i = 2 To ws1.Cells(Rows.Count, 1).End(xlUp).Row ws2.Cells(i + 1, 1) = ws1.Cells(i, 1) Next i End Sub 的外れならごめんなさい。m(__)m
お礼
こんな方法もあるんですね。ありがとうございました。
- KURUMITO
- ベストアンサー率42% (1835/4283)
次のようなマクロにしてはどうでしょう。 Sub Macro1() Set WS1 = Sheets("Sheet1") Set WS2 = Sheets("Sheet2") Dim RowPos As Integer RowPos = WS1.Range("A65536").End(xlUp).Row WS2.Select Range("A2:E2").Select Selection.Copy WS1.Select Range(Cells(3, "A"), Cells(RowPos + 1, "A")).Select ActiveSheet.Paste Range("A1").Select End Sub
お礼
こうやって組むんですね。ありがとうございました。 無事できました。
- layy
- ベストアンサー率23% (292/1222)
まずは「マクロの記録」の仕方を覚えてみましょう。 それから、「マクロの実行」の仕方。 あと、 毎回変化する「最終行」で困ってますか?。 「最終行へジャンプ」の操作がわかれば、ヒントになるかと思います。
補足
入力行の最後尾の行の次を選択 Range("A65536").End(xlUp).Offset(1).Select というところまでは分かります。 問題は、それが101行と仮定した場合、 別のシートでその101という数字を使いたいのです。
お礼
すごい!さらにこんな方法もあるんですか、マクロは奥が深いですね。ありがとうございました。