• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:マクロで行を削除するには?)

マクロを使用して行を削除する方法

このQ&Aのポイント
  • Windows NTでExcel 2000を使っている場合、マクロを使用して行を削除する方法について教えてください。
  • 特定の条件で空白の行を挿入し、2行目にデータの合計を出した表に対して行った作業を元に戻したい場合、どのようにすればいいですか?
  • マクロで範囲指定し、空白の行を削除する方法を教えてください。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.4

再度訂正を入れます。2行空白が続くと1行削除しないロジックになっていて、誤りがあります。下記に訂正してください。済みません。 Sub test01() p = 1 For i = 1 To 15 If Cells(p, 1) = "" Then Cells(p, 1).EntireRow.Delete Else p = p + 1 End If Next i End Sub 空白が続いた部分は同じ行で、行Deleteを繰り返さないと ダメなわけです。 [行の一部(A以外)に数式が入っている行は消えませんでした」は関係ないことが判りました。

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.3

#2で回答を入れたものです。よく考えると処理すべき最下行は、行削除と共にせりあがって来ることを思い出しました。最下行より下に別表があると消してしまうので修正します。最下行より下に別表がなければ実害はないが考慮不足ですので、お詫びして訂正させてください。 Sub test01() d = 15 For i = 1 To d If Cells(i, 1) = "" Then Cells(i, 1).EntireRow.Delete d = d - 1 End If Next i End Sub なおDELETEキーでセル内容を空白にしたセルも「=""」 で判別できることがわかりました。

Sheep17
質問者

補足

ありがとうございました。 早速マクロを組み込んで感激したところです。 改めてマクロってすごいと思いました。 ところで1つ問題が…。 行全体が空白の場合は問題なかったのですが 行の一部(A以外)に数式が入っている行は消えませんでした。 もう一度マクロにかけたら消えてくれるんですけどね。 2度やればいいことなのですが、できれば一度で処理できればと思います。

すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2

1.セルA3の行を削除するのはRange("A3").EntireRow.Deleteです。 消す行が変化しますのでCells(i,1).EntireRow.Deleteを使います。 これは第 i 行を抹消します。 2.あとは i 行が空白行かを判別すれば良いだけです。 3.第 i 行ですが、第1行i=1 から 最下行(仮に15行として) i=15 まで変化させて空白かどうかを聞き(判別)します。 4.セルA1からA15までにデータの入ったセルといれてないセルを 作って Sub test01() For i = 1 To 15 If Cells(i, 1) = "" Then Cells(i, 1).EntireRow.Delete End If Next i End Sub を実行すれば空白行がなくなりデータ行だけに詰まります。 実験してください。 5.あとはどの列で空白を判別するか、空白と見えるセル(行)は 本当に””か、違う場合もあり得ます。ただし新規シートの加工していない行の空白はIf Cells(i, 1) = "" Thenで聞けます。 6.あとプログラムの作成実行に関する経験の有無が判りません。 それで、マクロの記録を使って何でも良いから「Macro1」など作ってください。(1の部分は、過去のマクロ作成状況で大きな数になりますよね。) そしてSub Macro1()とEnd Subを除いて消してください。 その後上記のプログラムのSub test01()とEnd Sub以外の中間部分をコピーして、Sub Macro1()とEnd Subの間に貼りつけてください。 そしてMacroの実行の要領はご存知でしょう。

すると、全ての回答が全文表示されます。
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

3行削除するには以下のコードでOKかと。 Rows("1:3").Select Selection.Delete Shift:=xlUp ただし、削除する前に削除してよいかどうかの判断に注意してください。 もともと挿入を行なうマクロでセルに対して式設定しているでしょうから その式設定と同一である場合に削除を実行する、など。

すると、全ての回答が全文表示されます。

関連するQ&A