Tự động xóa dòng khi giá trị ô = 0

Liên hệ QC

longkhanhck

Thành viên mới
Tham gia
3/10/11
Bài viết
45
Được thích
3
Chào mọi người.
Mình có một vấn đề mà mò mãi không làm được, mong mọi người giúp đỡ.
Vấn đề của mình là:
Mình muốn excel tự động xóa các dòng khi giá trị các ô bất kì trên cùng 1 cột bằng 0.
Ví dụ: Khi Ô G6, G7, G15, G25 = 0 thì các dòng 6, 7, 15, 25 sẽ tự động xóa, hoặc bất kì ô nào trên cột G có giá trị =0 thì dòng chứa ô đó sẽ tự động xóa.

Mọi người xem file đính kèm nha.
Mọi người giúp mình giải quyết vấn đề này với nha. Cảm ơn mọi người
 

File đính kèm

  • XOA DONG TU DONG.xlsx
    35 KB · Đọc: 158
Chào mọi người.
Mình muốn excel tự động xóa các dòng khi giá trị các ô bất kì trên cùng 1 cột bằng 0.
Ví dụ: Khi Ô G6, G7, G15, G25 = 0 thì các dòng 6, 7, 15, 25 sẽ tự động xóa, hoặc bất kì ô nào trên cột G có giá trị =0 thì dòng chứa ô đó sẽ tự động xóa.
Thế từ dòng 303 đến 320 cũng bằng 0 đó thì bạn xử lý sao, có xóa không bạn, bạn làm sao loại trừ được tình huống này thì mới có thể tháo gỡ được vấn đề của bạn, bạn ạ!
 
Bạn tìm trong BOX lập trình từ khóa có lẻ là "xóa dòng" hay Delete row/rows

Nguyên lí làm việc của macro thường là dò từ hàng dưới nhất của cột ('G' của bạn) trở lên & xóa khi dự liệu = 0

Chúc thành công
 
Bạn tìm trong BOX lập trình từ khóa có lẻ là "xóa dòng" hay Delete row/rows
Nguyên lí làm việc của macro thường là dò từ hàng dưới nhất của cột ('G' của bạn) trở lên & xóa khi dự liệu = 0
Cô HYen lúc nào cũng thấy quăng cần cầu vui ghê, nhưng mà cháu thấy cái chỗ từ 303 tới 320 của bạn ấy thỏa mãn điều kiện = 0 nhưng mà bạn ý chắc không muốn xóa chỗ đó thì phải, xem chừng điều kiện kiểu này quăng cần câu cũng hóc thiệt đó, hihi
 
Thế từ dòng 303 đến 320 cũng bằng 0 đó thì bạn xử lý sao, có xóa không bạn, bạn làm sao loại trừ được tình huống này thì mới có thể tháo gỡ được vấn đề của bạn, bạn ạ!

Dòng từ 303 đến 320 đều xóa luôn bạn nếu như giá trị ô = 0, file mình gửi lên diễn đàn để minh họa thôi, Còn file thực tế mình không thể gửi lên được vì bị công ty mã hóa khi chép ra khỏi công ty thì không mở được.
Thực tế mình quản lý 1 mớ bòng bong thép các loại, nên mình muốn các dòng có giá trị =0 tự động xóa để thuận tiện cho việc kiểm soát
 
Dòng từ 303 đến 320 đều xóa luôn bạn nếu như giá trị ô = 0, file mình gửi lên diễn đàn để minh họa thôi, Còn file thực tế mình không thể gửi lên được vì bị công ty mã hóa khi chép ra khỏi công ty thì không mở được.
Thực tế mình quản lý 1 mớ bòng bong thép các loại, nên mình muốn các dòng có giá trị =0 tự động xóa để thuận tiện cho việc kiểm soát
Vậy thì các hàng đầu mỗi nhóm có xóa đi không bạn? Cụ thể là các hàng 4, 13, 23,..., 302, vì các hàng này cũng có giá trị trên cột G bằng 0.
 
Vậy thì các hàng đầu mỗi nhóm có xóa đi không bạn? Cụ thể là các hàng 4, 13, 23,..., 302, vì các hàng này cũng có giá trị trên cột G bằng 0.
Không những dòng này không xóa, vì nó dùng để phân biệt nhóm vật liệu, các ô ở cột G của các dòng này không có giá trị mà để trống.
Tại mình kéo chuột từ trên xuống nên giá trị tại ô trên cột G các dòng này bị quét giống như các ô của dòng khác
 
Lần chỉnh sửa cuối:
Không những dòng này không xóa, vì nó dùng để phân biệt nhóm vật liệu bạn, tại mình kéo chuột từ trên xuống nên giá trị tại các dòng này bị quét giống như các dòng kia
Bạn có thể thử nghiệm giống như bác HYen17 hướng dẫn. Ở đây tôi thực hiện theo 1 hướng khác:
1. Sử dụng AutoFilter, lọc cột G với giá trị 0 hoặc -, tiếp theo lọc theo cột B với tùy chọn <>"" (mục đích để trừ các hàng tiêu đề nhóm).
2. Xóa các hàng ứng với kết quả lọc.

Với cách làm trên, nếu Record Macro thì tôi được code này:
[GPECODE=vb]Sub Macro1()
Range("A3:J320").Select
Selection.AutoFilter
ActiveSheet.Range("$A$3:$J$320").AutoFilter Field:=7, Criteria1:="=-", _
Operator:=xlOr, Criteria2:="=0"
ActiveSheet.Range("$A$3:$J$320").AutoFilter Field:=2, Criteria1:="<>"
Range("A6").Select
Range(Selection, Selection.End(xlDown)).Select
Rows("6:320").Select
Selection.Delete Shift:=xlUp
Selection.AutoFilter
End Sub[/GPECODE]
Sau khi chỉnh sửa một số chỗ theo ý tưởng như trên thì tôi được code này:
[GPECODE=vb]Sub DeleteRows()
With Sheet1.Range("A3").CurrentRegion
.AutoFilter 7, "=-", xlOr, "=0"
.AutoFilter 2, "<>"
.Offset(1).Resize(, 1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
.AutoFilter
End With
End Sub[/GPECODE]
 

File đính kèm

  • XOA DONG TU DONG.rar
    41.9 KB · Đọc: 304
Vậy thì các hàng đầu mỗi nhóm có xóa đi không bạn? Cụ thể là các hàng 4, 13, 23,..., 302, vì các hàng này cũng có giá trị trên cột G bằng 0.
Còn nếu mình muốn xóa luôn những dòng đầu mỗi nhóm khi ô ở cột G = 0 thì code sẽ như thế nào bạn (Mình áp dụng Khi nhóm vật liệu đó không còn loại nào nữa)
Thank bạn rất nhiều ngày mai đi làm mình sẽ add code vào file công ty thử thế nào
 
Còn nếu mình muốn xóa luôn những dòng đầu mỗi nhóm khi ô ở cột G = 0 thì code sẽ như thế nào bạn (Mình áp dụng Khi nhóm vật liệu đó không còn loại nào nữa)
Thank bạn rất nhiều ngày mai đi làm mình sẽ add code vào file công ty thử thế nào
Code anh Phúc viết trên file giả định, vì không phải file thật bạn đưa lên diễn đàn nên nhớ lưu 1 file gốc nhé, còn copy 1 file để test chứ chạy Macro rùi là hỏng có undo được như công thức đâu nhé, không dữ liệu xóa nhầm không lấy lại được là lại "ngồi khóc tu tu đó", mình nói vui thế thôi vì bạn chưa rành macro thì nên cẩn thận 1 chút. hihihi...!
 
Bạn có thể thử nghiệm giống như bác HYen17 hướng dẫn. Ở đây tôi thực hiện theo 1 hướng khác:
1. Sử dụng AutoFilter, lọc cột G với giá trị 0 hoặc -, tiếp theo lọc theo cột B với tùy chọn <>"" (mục đích để trừ các hàng tiêu đề nhóm).
2. Xóa các hàng ứng với kết quả lọc.

Với cách làm trên, nếu Record Macro thì tôi được code này:
[GPECODE=vb]Sub Macro1()
Range("A3:J320").Select
Selection.AutoFilter
ActiveSheet.Range("$A$3:$J$320").AutoFilter Field:=7, Criteria1:="=-", _
Operator:=xlOr, Criteria2:="=0"
ActiveSheet.Range("$A$3:$J$320").AutoFilter Field:=2, Criteria1:="<>"
Range("A6").Select
Range(Selection, Selection.End(xlDown)).Select
Rows("6:320").Select
Selection.Delete Shift:=xlUp
Selection.AutoFilter
End Sub[/GPECODE]
Sau khi chỉnh sửa một số chỗ theo ý tưởng như trên thì tôi được code này:
[GPECODE=vb]Sub DeleteRows()
With Sheet1.Range("A3").CurrentRegion
.AutoFilter 7, "=-", xlOr, "=0"
.AutoFilter 2, "<>"
.Offset(1).Resize(, 1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
.AutoFilter
End With
End Sub[/GPECODE]

Cảm ơn nghiaphuc rất nhiều, mình giải quyết vấn đề được rồi,
 
Bạn có thể thử nghiệm giống như bác HYen17 hướng dẫn. Ở đây tôi thực hiện theo 1 hướng khác:
1. Sử dụng AutoFilter, lọc cột G với giá trị 0 hoặc -, tiếp theo lọc theo cột B với tùy chọn <>"" (mục đích để trừ các hàng tiêu đề nhóm).
2. Xóa các hàng ứng với kết quả lọc.

Với cách làm trên, nếu Record Macro thì tôi được code này:
[GPECODE=vb]Sub Macro1()
Range("A3:J320").Select
Selection.AutoFilter
ActiveSheet.Range("$A$3:$J$320").AutoFilter Field:=7, Criteria1:="=-", _
Operator:=xlOr, Criteria2:="=0"
ActiveSheet.Range("$A$3:$J$320").AutoFilter Field:=2, Criteria1:="<>"
Range("A6").Select
Range(Selection, Selection.End(xlDown)).Select
Rows("6:320").Select
Selection.Delete Shift:=xlUp
Selection.AutoFilter
End Sub[/GPECODE]
Sau khi chỉnh sửa một số chỗ theo ý tưởng như trên thì tôi được code này:
[GPECODE=vb]Sub DeleteRows()
With Sheet1.Range("A3").CurrentRegion
.AutoFilter 7, "=-", xlOr, "=0"
.AutoFilter 2, "<>"
.Offset(1).Resize(, 1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
.AutoFilter
End With
End Sub[/GPECODE]
Chào a,
Trường hợp cũng như thế này, nhưng khi thỏa mãn 1 điều kiện và mình muốn đưa (move) nó sang 1 sheet mới, ví dụ đặt tên là sheet đã xóa thì phải làm như thế nào ạ?
Rất mong câu trả lời của a ạ
 

File đính kèm

  • XOA DONG TU DONG.rar
    41.9 KB · Đọc: 11
Web KT
Back
Top Bottom