dポイントプレゼントキャンペーン実施中!

はじめまして。

EXCELでhistory.csvというファイルを読み込んで指定列をコピーし
貼り付けるマクロを作って使用しています。
そのcsvファイルはどんどん更新されて行が増えていきます。

できればコピーする前に、下から10行目までを削除した後に
コピペしたいのですが、下から10行目までというような行の指定方法は
あるのでしょうか。

上級者の方々、アドバイスをいただけないでしょうか。
よろしくお願いします。

A 回答 (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

でいかがですか
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/10/10 19:19

こんばんは。



本当は、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
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/10/10 19:19

既出の回答や下記なども参考になると思います。


行列操作 http://www.asahi-net.or.jp/~zn3y-ngi/YNxv20004.h … の
挿入・削除 http://www.asahi-net.or.jp/~zn3y-ngi/YNxv204.htm … や
範囲選択 http://www.asahi-net.or.jp/~zn3y-ngi/YNxv20006.h … の
範囲を検出して選択 http://www.asahi-net.or.jp/~zn3y-ngi/YNxv206.htm … 等

Sub test() '2~4を削除
 Dim x, y
 x = 2 '上端行
 y = 4 '下端行
 Rows(x & ":" & y).Delete
End Sub

確認用のSheetで確認しながら、ご自分で変更してみてください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/10/10 19:20

'-----------------------------------


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
これで、エラーを回避(削除しない)してます。
以上です。
 

この回答への補足

どうもありがとうございます。
助かりました。

ところで参考までに教えていただきたいのですが、
もし15行目までを削除の場合には、
myTarget.Offset(-14).Resize(15, 1).EntireRow.Delete xlUp

2ヶ所変えればいいのでしょうか。
よろしくお願いします。

補足日時:2009/10/09 21:15
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/10/10 19:19

Range("A" & Rows.Count).End(xlUp).Row - 10



でA列の下から10行引いた行数が分かります。
    • good
    • 0
この回答へのお礼

お答えいただきありがとうございます。
ちょっとやってみたのですがよくわかりませんでした。

列は全列で、下から10行目までを削除する場合
どのようにマクロに書けばいいのでしょうか。

よろしくお願いします。

お礼日時:2009/10/09 19:59

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