Xóa những dòng có giá trị bằng 0 (2 người xem)

  • Thread starter Thread starter ditimdl
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

ditimdl

Thành viên thường trực
Tham gia
11/10/06
Bài viết
378
Được thích
107
Giới tính
Nam
Nghề nghiệp
Pharmacist
Nhờ các bạn viết dùm sub xóa những dòng có giá trị bằng 0.
Cảm ơn!
 

File đính kèm

Dùng macro sau:
PHP:
Sub DelNULL()
With Application
.ScreenUpdating = False
.EnableEvents = False
    With Me.UsedRange
    For i = .Rows.Count To 1 Step -1
        If WorksheetFunction.Sum(.Rows(i)) = 0 Then
            .Rows(i).EntireRow.Delete
        End If
    Next
    End With
.EnableEvents = True
.ScreenUpdating = True
End With
End Sub
 
Khi chạy báo lỗi "invalid use of me keyword"
 
Có 2 cách:
1. Thay từ khóa Me bằng Activesheet (nếu bạn đã copy macro vào module)
2. Copy đoạn mã vào trang mã của sheet muốn xóa dòng.
 
Dùng Find
PHP:
Sub ktra()
Dim dau As String, vung0 As Range
With Sheet2.UsedRange
    Set vung0 = .Find(0, , , , xlByRows, xlNext, , , False)
        If Not vung0 Is Nothing Then
            dau = vung0.Address
            Do
               Set vung0 = .FindNext(vung0)
                    vung0.Clear
            Loop While Not vung0 Is Nothing And vung0.Address <> dau
        End If
End With
End Sub
 
to: hoangvulan
Cách 1 có tác dụng, cách 2 thì không :)
------------
Sau khi chạy sub nó lại xóa luôn cả text(mấy đề trong báo cáo nó cũng dọn sạch) thì phải sửa lại như thế nào vậy?
 
Hix, tại ví dụ bạn đưa không rõ ràng, nên không kiểm tra.
Dùng thử code bên dưới:
PHP:
Sub DelNULL()
Dim i As Long, j As Long
With Application
.ScreenUpdating = False
.EnableEvents = False
    With ActiveSheet.UsedRange
    For i = .Rows.Count To 1 Step -1
        For j = 1 To .Columns.Count
            If Not IsNumeric(.Cells(i, j)) Then GoTo Exit_For
        Next
        If WorksheetFunction.Sum(.Rows(i)) = 0 Then
            .Rows(i).EntireRow.Delete
        End If
Exit_For:
    Next
    End With
.EnableEvents = True
.ScreenUpdating = True
End With
End Sub

>>> Lưu ý: nếu muốn an toàn thì có thể thay sub này thành 2 sub, có dạng như sau:
PHP:
Private Sub dNul(selRange As Range)
Dim i As Long, j As Long
With Application
.ScreenUpdating = False
.EnableEvents = False
    With selRange
    For i = .Rows.Count To 1 Step -1
        For j = 1 To .Columns.Count
            If Not IsNumeric(.Cells(i, j)) Then GoTo Exit_For
        Next
        If WorksheetFunction.Sum(.Rows(i)) = 0 Then
            .Rows(i).EntireRow.Delete
        End If
Exit_For:
    Next
    End With
.EnableEvents = True
.ScreenUpdating = True
End With
End Sub
Sub DelNULL()
    Call dNul(Selection)
End Sub

Khi đó, trước khi chạy macro thì quét vùng cần dọn dẹp rồi hãy thực hiện macro.
 
Đã thử có vẻ ổn nhưng chưa chính thức áp dụng vào :)
Nhờ bạn thêm phần xóa số 0 trong 1 vùng đưọc chỉ định.
Cám ơn!
 
Đã thử có vẻ ổn nhưng chưa chính thức áp dụng vào :)
Nhờ bạn thêm phần xóa số 0 trong 1 vùng đưọc chỉ định.
Cám ơn!
Ý của bạn là, nếu ô nào có giá trị = 0 thì xóa số 0 đi ấy à (kể cả ô công thức có kết quả = 0)
 
Nhờ các bạn viết dùm sub xóa những dòng có giá trị bằng 0.
Cảm ơn!

Tôi nghĩ xóa số 0 là được rồi cần gì phải xóa dòng.
Mã:
Sub Xoa0()
    On Error Resume Next
    ActiveSheet.UsedRange.Replace "0", "", 1
End Sub

Còn cứ phải xóa dòng mới được thì sử dụng code này thử xem (không dùng vòng lặp)
Mã:
Sub XoaRong()
    On Error Resume Next
    With ActiveSheet.UsedRange
        .Replace "0", "", 1
        .SpecialCells(2).EntireRow.Hidden = 1
        .SpecialCells(12).EntireRow.Delete
        .EntireRow.Hidden = 0
    End With
End Sub
 

File đính kèm

Tôi nghĩ xóa số 0 là được rồi cần gì phải xóa dòng.
Mã:
Sub XoaRong()
    On Error Resume Next
    With ActiveSheet.UsedRange
        .Replace "0", "", 1
        .SpecialCells(2).EntireRow.Hidden = 1
        .SpecialCells(12).EntireRow.Delete
        .EntireRow.Hidden = 0
    End With
End Sub

Có thể đoán nhận qua thử
.SpecialCells(2).EntireRow.Hidden = 1
ẩn các hàng có dữ liệu
.SpecialCells(12).EntireRow.Delete
xóa các hàng không ẩn

Xin hỏi TrungChinhs: thế có đúng không ? nếu có thể anh cho bảng tác dụng của
.SpecialCells(n)
với n thuộc miền nào, mỗi giá trị cụ thể của n có hiệu quả gì?

Rất cảm ơn
 
Web KT

Bài viết mới nhất

Back
Top Bottom