trantuonganh2008
Thành viên thường trực
- Tham gia
- 8/11/08
- Bài viết
- 305
- Được thích
- 53
Bạn yêu cầu: XÓA VÙNG CÓ ĐIỀU KIỆN mà chẳng nói đó là điều kiện gì thì sao mà làm đây?Chào buổi sáng,
Mình có vấn đề này mong mọi người giúp. Xin xem file đính kèm.
Cám ơn nhiều!
Xài thử code này xem thế nào:Cám ơn bạn, ý mình là Clear dữ liệu chứ không phải xoá, mình đã sửa lại Clearcontents nhưng là xoá vùng mình đã chọn trước và đặt name cho nó (với đk là dòng tại cột A có dữ liệu text thì không xoá)chứ không phải xoá dòng. Nhờ bạn chỉnh lại dùm mình.
Cám ơn nhiều!
Sub Test()
With Range("A1:K10000")
.AutoFilter 1, ">0"
.Offset(1, 1).SpecialCells(12).ClearContents
.AutoFilter
End With
End Sub
Ah... vâng! Tôi nhầm ý của bạn rồi... Sorry!Sao nó vẫn xóa vùng trong 3 cột mình nói trên bác ndu ơi?
Sub Test()
With Range([A1], [A65536].End(xlUp))
.AutoFilter 1, ">0"
Union(.Offset(1, 1).Resize(, 6), .Offset(1, 10).Resize(, 1)).SpecialCells(12).ClearContents
.AutoFilter
End With
End Sub
Thì dùng vòng lập For đi qua các sheet nữa là đượcChào bác ndu,
Làm phiền bác chút nhé. Mình có khá nhiều sheet, và vùng xóa cũng giống như vậy. Nhờ bác thêm vào code để khi xóa thì nó xoá tất cả các sheet luôn nhé. Giả sử workbook có 3 sheet.
Cám ơn bác nhiều nhiều!
Sub Test()
Dim Sh As Worksheet
For Each Sh In ThisWorkbook.Worksheets
With Sh.Range(Sh.[A1], Sh.[A65536].End(xlUp))
.AutoFilter 1, ">0"
Union(.Offset(1, 1).Resize(, 6), .Offset(1, 10).Resize(, 1)).SpecialCells(12).ClearContents
.AutoFilter
End With
Next Sh
End Sub
Bạn chẳng chịu để ý CẢNH BÁO tôi nói ở trên gì cả!Sao nó báo lỗi bác ơi??
Sub Test()
Dim Sh As Worksheet
On Error Resume Next
For Each Sh In ThisWorkbook.Worksheets
With Sh.Range(Sh.[A1], Sh.[A65536].End(xlUp))
.AutoFilter 1, ">0"
Union(.Offset(1, 1).Resize(, 6), .Offset(1, 10).Resize(, 1)).SpecialCells(12).ClearContents
.AutoFilter
End With
Next Sh
End Sub
Chào bác ndu, Mình vẫn muốn xoá vùng này nhưng những ô nào trong vùng này chứa công thức thì mình không muốn xoá thì làm thế nào. Làm như vậy mình nghĩ sẽ rút gọn lại code hơn vì nó sẽ xoá một vùng liên tục, khỏi phải cần dùng phương thức Union. Làm phiền bác giúp mình nhé! Cám ơn bác nhiều!!!Bạn chẳng chịu để ý CẢNH BÁO tôi nói ở trên gì cả! Như tôi đã nói, toàn bộ dử liệu của các sheet phải giống nhau ---> Sheet3 trong file có cái gì? Có giống Sheet1 và Sheet2 hay không? - Một là bạn xóa sheet 3 đi - Hai là thêm dòng On Error Resume Next vào đầu code:PHP:Sub Test() Dim Sh As Worksheet On Error Resume Next For Each Sh In ThisWorkbook.Worksheets With Sh.Range(Sh.[A1], Sh.[A65536].End(xlUp)) .AutoFilter 1, ">0" Union(.Offset(1, 1).Resize(, 6), .Offset(1, 10).Resize(, 1)).SpecialCells(12).ClearContents .AutoFilter End With Next Sh End Sub
Bạn thử đưa 1 file đầy đủ (chừng 2 sheet) lên xem thế nàoChào bác ndu,
Mình vẫn muốn xoá vùng này nhưng những ô nào trong vùng này chứa công thức thì mình không muốn xoá thì làm thế nào. Làm như vậy mình nghĩ sẽ rút gọn lại code hơn vì nó sẽ xoá một vùng liên tục, khỏi phải cần dùng phương thức Union. Làm phiền bác giúp mình nhé!
Cám ơn bác nhiều!!!
Thử code này xem:Sorry, mình xin nói lại. Yêu cầu của mình là xoá từ [B6:AF44] với 2 điều kiện sau:
1. Những dòng có [A] là text thì không xoá.
2. Những ô nào trong vùng này chứa công thức thì cũng không xoá luôn.
Sub Test()
Dim Sh As Worksheet
On Error Resume Next
For Each Sh In ThisWorkbook.Worksheets
With Sh.Range(Sh.[A1], Sh.[A65536].End(xlUp))
.AutoFilter 1, ">0"
.Offset(1, 1).Resize(, 31).SpecialCells(12).SpecialCells(2).ClearContents
.AutoFilter
End With
Next Sh
End Sub