• ベストアンサー

ExcelVBAでいくつかの行を固定したまま他の行を削除

どうも。こんにちは。sukizukiです。 ExcelでVBAをやっています。 ある行の文字を固定したまま他の行すべての文字を削除するにはどのようにやればいいのでしょう。 3行目の文字列全てを保持し、他の文字は全て削除する方法を教えてください。 まだはじめて間もないので、 表の内容を削除する方法というと >Sheets("sheet2").Cells.Clear これくらいしか分かりません。 よろしくお願いします。

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

  • ベストアンサー
  • happypoint
  • ベストアンサー率36% (521/1422)
回答No.1

sukizukiさん、こんにちは。  ある行だけを残して、他の行はすべて削除 という意味でよろしいですか? 「ある行」より下の行をまず削除し、 つぎにある行より上の行を削除することで、 ある業だけが残ります。 行削除はRowsに対してDeleteすることで可能です。 一応、3行目を残して削除するマクロです。 Const・・・の行の数値を変更すると、他の行を残すこともできます。 「ある行」が複数ある場合、事態はもっと複雑になってきます。 その場合は補足してください。 Option Explicit Sub Macro1() Const lngRow As Long = 3 '残す行(固定値) Rows(lngRow + 1 & ":" & ActiveSheet.Rows.Count).Delete '残す行より下の行を最終行まで削除 If lngRow > 1 Then Rows("1:" & lngRow - 1).Delete '残す行より上の行を削除(1行目を残す場合をのぞく) End Sub

sukizuki
質問者

お礼

happypointさん、こんにちは。 前回の質問では大変お世話になりました。 今回も早速の回答ありがとうございます。 ある行だけ残して他の行を全て削除できました! 今のとこある行は1つだけなのですが、 複数になっても教えていただいたのを応用すればいいんですよね。 本当に勉強になります。 ありがとうございました。

その他の回答 (2)

noname#11856
noname#11856
回答No.3

Cellsだけ指定すると、全てのセルを指定していることになりますよね。 Cells(1,1)とすれば1行目の1列目、つまりA1セルを指定することになります。 行単位の指定はRowsで、1行目であればRows(1)です。 列であればColumns(1)で1列目となります。 複数行の指定となると、場合によってはRangeでの指定のほうが簡単かもしれません。 常に3行目を残すならRange("1:2")のほうが簡単なので。 ところで、削除と仰ってますが、行削除でしょうか? それともクリアするだけ? 質問文の3行目を保持するというのは、処理後も3行目であって欲しいのか 上の2行を物理的に削除し、3行目が繰り上がって1行目になる状態でいいのか。 全社であればクリアでClear、後者であれば削除でDeleteになります。

sukizuki
質問者

お礼

yunn117さん、こんにちは。 早速の回答ありがとうございます。 Cells,Rows,Columnsの違いもいまいち把握できてませんでした。こりゃ勉強頑張らないとです。 Clear,Deleteも行が変わってしまうので全然違うんですね。一緒だと思ってました^^;。 精進しないとです。 ありがとうございました。

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.2

Rows("1:2").Select Selection.ClearContents Rows("4:100").Select Selection.ClearContents 100というのは、最後の行にしてみてください。

sukizuki
質問者

お礼

早速の回答ありがとうございます。 3行目を残すやり方ですよね。 できました。 複数やる場合も Rowsで残したい行を入れないで記述していけばいいんですよね。 有難うございました。

関連するQ&A