• ベストアンサー

エクセルマクロ 不定範囲へのコピー

B列のデータが入力されている最終行(添付画像では10行)まで、「data」シートの「E1」セルのデータをA列にコピーする方法をご教示願います(つまり、A1~A10まで)。B列のデータ数は不定なので、マクロで対応したいと思っています。 〈条件〉 B1には必ずデータは入力されていて、B列のデータは連続しています。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.1

B列にはB1からデータが入っているとして 以下のどちらかで E1だけのデータをコピーする Sub Test() Dim LastRow As Long With Sheets("Sheet1") LastRow = .Cells(Rows.Count, "B").End(xlUp).Row .Range(.Cells(1, "A"), .Cells(LastRow, "A")).Value = Sheets("data").Range("E1").Value End With End Sub E1からB列の最終行と同じ行数分(B10までならE10まで)コピーする Sub Test2() Dim LastRow As Long With Sheets("Sheet1") LastRow = .Cells(Rows.Count, "B").End(xlUp).Row .Range(.Cells(1, "A"), .Cells(LastRow, "A")).Value = Sheets("data").Range("E1").Resize(LastRow, 1).Value End With End Sub

KIKAIDER01
質問者

補足

ご回答ありがとうございます。あと1点ご教示願います。シート名を指定せず、アクティブシートでこのマクロを実行するにはどのように変えればよいでしょうか(データのコピー元は同じ)?

その他の回答 (2)

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.3

> シート名を指定せず、アクティブシートでこのマクロを実行する With Sheets("Sheet1") を With ActiveSheet にしてください。

KIKAIDER01
質問者

お礼

重ね重ねのご教示ありがとうございました。

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

>B1には必ずデータは入力されていて、B列のデータは連続しています。 これは下記のやり方には好都合。 B列のデータのある、最終行は、よく使われる、B1からEnd(xlDown)の下記や別のB10000からEnd(xlUp)でわかる。 Sub test01() x = Range("B1").End(xlDown).Row MsgBox x Range("B1:B" & x).Select Selection.Copy Range("E1") End Sub それだけの問題ではないの? ーー 質問文は、何のことを言っているかわからない。突然「data」シートの「E1」・・など出てきて B列とのシートとは別か? 質問文を正しく書ける訓練をすること。 これができるようになるためには、もっとエクセルの勉強が、背後に必要なのだと思う。 マクロなど手をだす以前にね。 == 課題を推定して、 Sub test01() x = Range("B1").End(xlDown).Row MsgBox x Range("B1:B" & x).Select Selection.Copy Range("E1") End Sub