• 締切済み

エクセル 最終行からの連続コピー

* すぐに回答を! エクセルC20からI51までデータを1日1行ずつ入力します。 データが入力されている最終行から上に連続する10行(最終行含む)をコピーしたいのですが、最終行から10行上をどのように認識させたらいいのか、わかりません。Offsetなど試してみましたがダメでした。 よろしくお願いします。 Sub dataコピー() Dim i As Long Dim j As Integer Dim rng As Range '最後尾から10行前までを選択 With Worksheets("月").Range(Cells(20, 3), Cells(51, 10)) For i = Cells(Rows.Count, 1).End(xlUp).Row To -10? If rng Is Nothing Then Set rng = .Rows(i) End If j = j + 1 If j >= 10 Then Exit For Next i 'コピー If Not rng Is Nothing Then rng.Copy Range("M1") Beep Else MsgBox "該当行は存在しません。", 48 End If End With Set rng = Nothing End Sub コードはこちらを参考にしました ​http://questionbox.jp.msn.com/qa5440189.html

みんなの回答

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.3

Sub Test1() MsgBox Cells(Rows.Count, 1).End(xlUp).Row End Sub で試してみてください。最終の行が番号が表示されますよね。 ただコードですが With Worksheets("月").Range(Cells(20, 3), Cells(51, 10)) For i = Cells(Rows.Count, 1).End(xlUp).Row To 20 Step -1 としておけば、最終行から20行目まで繰り返されますが j = j + 1 If j >= 10 Then Exit For とありますので、10回繰り替えられたら、そこで終わりになるはずです。 For i = Cells(Rows.Count, 1).End(xlUp).Row To Cells(Rows.Count, 1).End(xlUp).Row -10 Step -1 とすれば j = j + 1 If j >= 10 Then Exit For は不要になります。 但し最終行が28とか30より少ない場合にどの様に処理したいのかで 使い方が変わってきます。

t-9900
質問者

お礼

お返事が遅くなり申し訳ありません。 思いついた方法を、色々と試していますが、どこが悪いのかさっぱりわかりません。 こちらの方法も試してみましたが、コピーできません(コピー先のセルは空白のままです)。 コードの勉強にはなりました。 有難うございました。

t-9900
質問者

補足

sortで降順にして、こちらのコードでFor 1 To 20 step 1で問題は解決しました! 失礼致しました。 どうも有難うございました!

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

最終行の10行前から最終行までなら、例えば次のようにすればよいでしょう。 For i = Cells(Rows.Count, 1).End(xlUp).Row - 10 To Cells(Rows.Count, 1).End(xlUp).Row

t-9900
質問者

お礼

この方法では、うまくいきませんでしたが勉強になりました。 有難うございました。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

>最終行から10行上をどのように認識させたらいいのか Sub Test() Rows(Range("A65536").End(xlUp).Row & ":" & Range("A65536").End(xlUp).Row - 10).Copy End Sub を試してみてください。

t-9900
質問者

補足

hallo-2007さん、有難うございます。 最終行から10行上を認識させたいのに出来ないのは For i = Cells(Rows.Count, 1).End(xlUp).Row のところなんです。 最終行の10行前 To 最終行 というのは出来ないのでしょうか。 説明が下手ですみません。

関連するQ&A