プロが教えるわが家の防犯対策術!

A1:D5までのデータ表で、最後にデータが入っている列を探して、その列のデータを指定したセルにコピーをしたい思っています。
たとえば、C1:C5が最後のデータだとして、このデータを自動的に取得しF1:F5にコピーしたいのですがどうしたらよいでしょうか。VBA初心者です。わかる方、よろしくお願いします。

A 回答 (3件)

'最後の列を取る場合


Sub TestSample1()
Dim Rng As Range
'ActiveCellで、データ範囲の中にセルを置いても可能です。
Set Rng = Range("A1").CurrentRegion
With Rng
 .Columns(.Columns.Count).Copy Range("F1")
End With
End Sub

'#1の方には申し訳ありませんが、UsedRange の親オブジェクトは、Sheet ですから、その範囲だけの場合はよいのですが、そうでない場合は、誤動作することがあります。

質問タイトルの
「VBA データ表の中の最後のデータが入っている『セル』を取得する方法を教えて下さい。」
は、以下のようになります。

Sub TestSample2()
Dim Rng As Range
Set Rng = Range("A1").CurrentRegion
With Rng
 .Cells(.Cells.Count).Copy Range("F1")
End With
End Sub
    • good
    • 0
この回答へのお礼

最後の列の取得、最後のセルの取得の両方を実行する事ができました。
有難う御座いました。

お礼日時:2018/04/16 19:02

こんにちは!



一例です。
オーソドックスにA列~D列までループさせ、最終行の最大列を取得するようにしています。

Sub Sample1()
Dim j As Long, myMax As Long, myCol As Long
Range("E:E").ClearContents
For j = 1 To 4 '//A~D列まで//
If Cells(Rows.Count, j).End(xlUp).Row > myMax Then
myMax = Cells(Rows.Count, j).End(xlUp).Row
myCol = j
End If
Next j
Cells(1, myCol).Resize(myMax).Copy Range("E1")
End Sub

※ 最終行が最大の列が複数ある場合は
最初の列(一番左側の列)がコピー&ペーストされます。m(_ _)m
    • good
    • 0
この回答へのお礼

データ表の最大データの列の取得も知りたいと思っていたので参考になりました。
有難う御座いました。

お礼日時:2018/04/16 19:07

お疲れさまです。


セルにはデータだけ入力してあり、他の関数入力等は無いでしょうか?

その場合ですと、usedrangeで最終列を取得すれば平気だと思います。

頑張ってみてください。
    • good
    • 0

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