• ベストアンサー

マクロで、0のデーターの行を削除

下記のような表があるのです(毎月のため苦労して消してます)が、データーの合計欄(セル)が0の行を削除するマクロはどうしたらよいのですか?   A   B    C  コード  合計  内容 1 001   0    0     この行を削除 2 003   5    2・・・  この行は残す 3 004   9    4・・・  この業は残す 4 010   0    0     この行は削除

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

  • ベストアンサー
  • mazda323f
  • ベストアンサー率52% (13/25)
回答No.4

恐らくこれで動くはずです。 ざっくりと動作確認は行いましたが、もし動かなければ言ってください。 Sub Sankou() ' 'Range("ここの値は合計が始まるセルを指定").select Range("c1").Select Do Until ActiveCell = "" '空白セルまでLoop If ActiveCell = 0 Then 'もしセルに0が記入してある場合 Selection.EntireRow.Delete '行全体を削除 Else '0以外が記入してある場合 ActiveCell.Offset(1).Activate 'アクティブセルを1つ下へ移動 End If Loop MsgBox "終了しました" End Sub

その他の回答 (4)

  • mazda323f
  • ベストアンサー率52% (13/25)
回答No.5

ANo.4です。 ここではマクロのコメントに色がつかない為、分かりにくいと思いますので、先程のマクロ文をコピーして一度VBA上に貼り付けると分かりやすいかもしれません。

npsw
質問者

お礼

本当にありがとうございました。 またご丁寧に説明をつけて頂いたことで、非常に判りやすく、 修正も楽でした。 印刷し保存を勝手にさせて頂きました。 また、動きも出て、良く判りました(やっている内容が判りました)

  • kigoshi
  • ベストアンサー率46% (120/260)
回答No.3

#1です。訂正します。 Dim rIdx As Long rIdx = 0 Do Until Cells(rIdx + 1, 1).Value = "" rIdx = rIdx + 1 If Cells(rIdx, 2).Value = 0 Then Rows(rIdx).Delete Shift:=xlUp rIdx = rIdx - 1 End If Loop 先の回答は合計欄をC列の場合でした。

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.2

  見出し: 1行目 データ: 2行目~~ 合計列: B列 として、合計0の行を削除する場合 '------------------------------------------- Sub Test()  Dim R As Long  For R = Cells(Rows.Count, "B").End(xlUp).Row To 2 Step -1    If Cells(R, "B").Value = 0 Then      Rows(R).Delete xlShiftUp    End If  Next R End Sub '-------------------------------------------- 但し、該当シートをアクティブにした状態で実行すること 以上。    

npsw
質問者

お礼

ありがとうございました。 データー件数が約6000件であったので、最初暴走してしまったかと思いました。 もし、よろしかったら、勉強のために、各メソッドの内容を教えて頂けますでしょうか? ちなみに、 Sub Test() Dim R As Long For R = Cells(Rows.Count, "C").End(xlUp).Row To 3 Step -1 If Cells(R, "C").Value = 0 Then Rows(R).Delete xlShiftUp End If Next R End Sub のようにして、うまくいきました。

  • kigoshi
  • ベストアンサー率46% (120/260)
回答No.1

もっともベタな方法ですが Dim rIdx As Long rIdx = 0 Do Until Cells(rIdx + 1, 1).Value = "" rIdx = rIdx + 1 If Cells(rIdx, 3).Value = 0 Then Rows(rIdx).Delete Shift:=xlUp rIdx = rIdx - 1 End If Loop マクロを使わなくてもオートフィルタで0の行のみ表示しそれを選択・削除、という手もあります。

npsw
質問者

お礼

ごめんなさい、質問のデーターですとうまくいきましたが、 見出しは、1と2行目にあり、 合計欄は、”c”の列で、 教えて頂いた1のやり方で、 うまくいきませんでした。 念のため、アクティブセルもしてみましたが、だめでした。

関連するQ&A