• 締切済み

エクセルで条件に合うデータをレコードごと自動に削除するには?

エクセルで教えてください。在庫管理です。商品コードをキーに出し入れ数(プラス1、マイナス2など)を合計し、値が0(ゼロ)になったデータをレコードごと(行ごと)削除する方法を教えてください。「集計」を使って、手作業で0の値を探し削除することも出来ますが、数式で行うか、マクロを作成したいと思っています。 例フィールド 商品コード、個数、

みんなの回答

  • jindon
  • ベストアンサー率43% (50/116)
回答No.4

ごめんなさい。1箇所違っていました。 Sub delete_0() Dim i As Integer, lastA As Integer lastA = Range("A65536").End(xlUp).Row Columns("AZ").Clear For i = 2 To Range("A65536").End(xlUp).Row If WorksheetFunction.SumIf(Range("A2:A" & lastA), _ Range("A" & i).Value, Range("B2:B" & lastA)) = 0 Then Range("AZ" & i).Value = "y" End If Next i For i = 2 To Range("A65536").End(xlUp).Row If Range("AZ" & i).Value = "y" Then Range("AZ" & i).EntireRow.Delete i = i - 1 End If Next i End Sub

lovespoon
質問者

お礼

ありがとうございました☆参考にさせて頂きます。 お礼が遅くなり申し訳ありません。

  • jindon
  • ベストアンサー率43% (50/116)
回答No.3

#1 jindonです。 コードを以下に変更してください。 尚、AZ列を作業列として使用していますので、他の列に変更する場合はコード中の"AZ"のAZを適当に変えてください。 Sub delete_0() Dim i As Integer, lastA As Integer lastA = Range("A65536").End(xlUp).Row Columns("AZ").Clear For i = 2 To Range("A65536").End(xlUp).Row If WorksheetFunction.SumIf(Range("A2:A" & lastA), _ Range("A" & i).Value, Range("B2:B" & lastA)) = 0 Then Range("C" & i).Value = "y" End If Next i For i = 2 To Range("A65536").End(xlUp).Row If Range("AZ" & i).Value = "y" Then Range("AZ" & i).EntireRow.Delete i = i - 1 End If Next i End Sub

  • jindon
  • ベストアンサー率43% (50/116)
回答No.2

#1 jindon です。 例フィールド 商品コード、個数、 もう少し具体例を挙げていただけると解りやすいです。

lovespoon
質問者

補足

申し訳ありません。 商品コード  個数 A11111    2 B22222    1 C33333    1 A11111    -1 A11111    -1 B22222    -1 上記のような表があるとします。 商品コードをキーに個数を合計します。 個数の合計が0になった場合、その商品コードを含む 行を削除します。例で言えば結果として C33333   -1 の行のみ残るような形になります。

  • jindon
  • ベストアンサー率43% (50/116)
回答No.1

1.excel画面から Alt+F11 でVBE起動 2.挿入→標準モジュール→右画面に下記コードをコピー+ペースト 3.Alt+F11 でexcel画面に戻り ツール→マクロ→マクロ→delete_0選択→実行 Sub delete_0() Dim i As Integer i = 1 For i = 1 To Range("A65536").End(xlUp).Row If (Range("A" & i).Value <> "") * (Range("B" & i).Value = 0) Then Range("A" & i).EntireRow.Delete i = i - 1 End If Next i End Sub 機能: A列に文字列・数値があるB列が 0 又は値のない行を削除します。

lovespoon
質問者

お礼

お返事ありがとうございます。 説明不足ですみません。商品コードごとに個数の合計を出し、なおかつその合計が0の場合、対象となる商品コードをもつレコードを全て削除したいという時の方法をお教え願いたいのですが。どうぞよろしくお願い致します。

関連するQ&A