• ベストアンサー

EXCEL マクロで下から10行目までを削除する方法

はじめまして。 EXCELでhistory.csvというファイルを読み込んで指定列をコピーし 貼り付けるマクロを作って使用しています。 そのcsvファイルはどんどん更新されて行が増えていきます。 できればコピーする前に、下から10行目までを削除した後に コピペしたいのですが、下から10行目までというような行の指定方法は あるのでしょうか。 上級者の方々、アドバイスをいただけないでしょうか。 よろしくお願いします。

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

  • ベストアンサー
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.5

> 列は全列で、下から10行目までを削除する場合 > どのようにマクロに書けばいいのでしょうか Sub test() Dim mDeleteRows As Integer mDeleteRows = 10 If Range("A" & Rows.Count).End(xlUp).Row - mDeleteRows + 1 > 0 Then Rows(Range("A" & Rows.Count).End(xlUp).Row - mDeleteRows + 1 & ":" & Range("A" & Rows.Count).End(xlUp).Row).Delete Shift:=xlUp End If End Sub でいかがですか

noname#96687
質問者

お礼

お答えいただきありがとうございます。 いろんな方法があるんですね。 勉強になりました。

その他の回答 (4)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんばんは。 本当は、history.csv から始まるような気もしますが、この程度でよいのでしょうか。 Sub DeleteTest1()   Dim i As Long   Dim j As Long   'ユーザー入力   j = 15 '削除する行      If j <= 0 Then Exit Sub   With ActiveSheet     i = .Cells(Rows.Count, 1).End(xlUp).Row '最終行を求める     If i > j Then       i = i - j + 1     Else       j = i: i = 1     End If     Application.ScreenUpdating = False      .Cells(i, 1).Resize(j).EntireRow.Delete     Application.ScreenUpdating = True   End With End Sub

noname#96687
質問者

お礼

お答えいただきありがとうございます。 いろんな方法があるんですね。 勉強になりました。

  • turuzou
  • ベストアンサー率33% (15/45)
回答No.3

既出の回答や下記なども参考になると思います。 行列操作 http://www.asahi-net.or.jp/~zn3y-ngi/YNxv20004.html の 挿入・削除 http://www.asahi-net.or.jp/~zn3y-ngi/YNxv204.html#1 や 範囲選択 http://www.asahi-net.or.jp/~zn3y-ngi/YNxv20006.html の 範囲を検出して選択 http://www.asahi-net.or.jp/~zn3y-ngi/YNxv206.html#2 等 Sub test() '2~4を削除  Dim x, y  x = 2 '上端行  y = 4 '下端行  Rows(x & ":" & y).Delete End Sub 確認用のSheetで確認しながら、ご自分で変更してみてください。

noname#96687
質問者

お礼

お答えいただきありがとうございました。

  • myRange
  • ベストアンサー率71% (339/472)
回答No.2

'----------------------------------- Sub Test()  Dim myTarget As Range  Set myTarget = Cells(Rows.Count, "A").End(xlUp)  On Error Resume Next  myTarget.Offset(-9).Resize(10, 1).EntireRow.Delete xlUp End Sub '------------------------------------- 当然ながら、データが10以下の場合は Deleteのところでエラーが出るので On Error Resume Next これで、エラーを回避(削除しない)してます。 以上です。  

noname#96687
質問者

お礼

お答えいただきありがとうございます。 いろんな方法があるんですね。 勉強になりました。

noname#96687
質問者

補足

どうもありがとうございます。 助かりました。 ところで参考までに教えていただきたいのですが、 もし15行目までを削除の場合には、 myTarget.Offset(-14).Resize(15, 1).EntireRow.Delete xlUp 2ヶ所変えればいいのでしょうか。 よろしくお願いします。

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

Range("A" & Rows.Count).End(xlUp).Row - 10 でA列の下から10行引いた行数が分かります。

noname#96687
質問者

お礼

お答えいただきありがとうございます。 ちょっとやってみたのですがよくわかりませんでした。 列は全列で、下から10行目までを削除する場合 どのようにマクロに書けばいいのでしょうか。 よろしくお願いします。

関連するQ&A