Xóa dòng dữ liệu trong sheet

Liên hệ QC

binhnguyenthanh

Thành viên chính thức
Tham gia
18/8/09
Bài viết
79
Được thích
9
Dear cả nhà, em có file excel cần xóa các dòng là tổng của các dòng phía dưới nó như file đính kèm. Em chưa tìm ra cách xóa thế nào cho nhanh và hiệu quả. Mong cả nhà giúp đỡ. Có cao thủ nào trợ giúp bằng VBA thì càng tốt ạ. Em xin cảm ơn.
 

File đính kèm

  • xoadulieu.xlsx
    8.9 KB · Đọc: 14
Dear cả nhà, em có file excel cần xóa các dòng là tổng của các dòng phía dưới nó như file đính kèm. Em chưa tìm ra cách xóa thế nào cho nhanh và hiệu quả. Mong cả nhà giúp đỡ. Có cao thủ nào trợ giúp bằng VBA thì càng tốt ạ. Em xin cảm ơn.
Dùng cột phụ E:
PHP:
E2=IF(B2<>B1,1,0)
Copy công thức xuống tít tít.
Lọc cột E với điều kiện =1
Chọn vùng vừa lọc (chọn cả dòng), tiếp đó nhấn Alt ; (phím Alt và phím dấu chấm phẩy), nhấn tiếp phím ctrl - (phím ctrl và phím dấu trừ).
Hủy lọc.
Kết thúc!
 
Kết quả không đúng ạ. Như em hiểu công thức của bác thì các dòng phía trên dòng cần xóa có giá trị là 1 (trừ dòng đầu tiên) nhưng em làm theo hướng dẫn thì không đúng. Em cũng chưa hiểu phần này "Chọn vùng vừa lọc (chọn cả dòng), tiếp đó nhấn Alt ; (phím Alt và phím dấu chấm phẩy), nhấn tiếp phím ctrl - (phím ctrl và phím dấu trừ)."
 
Bạn đổi lại công thức E1 là
PHP:
=COUNTIF($B$1:$B1;B1)
rồi fill xuống
Sau đó bạn lọc giá trị 1 cột E và xóa các dòng này
 
Thansk bác ketxu, theo công thức của bác thì ok rồi ạ. Nhưng cho em hỏi thêm nếu file của em trật tự các dòng không còn thứ tự như vậy nhưng em vẫn muốn xóa các dòng tổng đó đi thì có cách nào không ạ? vì trong trường hợp file không sắp xếp đúng thứ tự như vậy thì mình lại phải sắp xếp lại rồi mới thực hiện theo cách của bác được ạ.
 
Bạn sắp xếp lại theo level 1 cột B, level 2 cột C là được mà, cũng nhanh chứ đâu có lâu ^^
 
hỏi thêm nếu file của em trật tự các dòng không còn thứ tự như vậy nhưng em vẫn muốn xóa các dòng tổng đó đi thì có cách nào không
Trả lời: Có!

------
Hỏi thêm: Thí chủ đã hiểu cách làm bài #2 chưa? (Vì thấy bài #3 keo chưa hiểu)
 
Như em đã nói là nhất trí với phương án sắp xếp. Nhưng nếu tìm ra cách khác để rút gọn bước sắp xếp đi thì vẫn hơn chứ ạ.
Nếu các Cells tổng trong cột D của bạn vẫn còn công thức, thì chỉ 1 dòng Code thì yêu cầu của bạn trở lên đơn giản.
PHP:
 Columns(4).SpecialCells(xlCellTypeFormulas, 23).EntireRow.Delete
 
Lần chỉnh sửa cuối:
Em lại gặp thêm vấn đề xóa nữa không thể dùng theo cách của bác như file đính kèm. Mong mọi người chỉ giúp ạ.
Bạn thử với:
PHP:
Sub abc()
    Dim i As Long
    For i = 4 To Cells(Rows.Count, 1).End(xlUp).Row
        If Cells(i, 1).Value = Cells(i + 1, 1).Value And Cells(i + 1, 1).Value = Cells(i + 2, 1).Value Then
            If Cells(i, 2).Value = Cells(i + 1, 2).Value And Cells(i + 1, 2).Value = Cells(i + 2, 2).Value Then
                If Cells(i, 3).Value = Cells(i + 1, 3).Value And Cells(i + 1, 3).Value = Cells(i + 2, 3).Value Then
                    Rows(i).Delete
                End If
            End If
        End If
    Next
End Sub
 
Cho em bon chen 1 Code chọn dòng này với :D
Mã:
Sub Chondong()
    Dim sRng As Range, Rng As Range
On Error GoTo Thoat
Set sRng = Sheet1.Range("A2", Sheet1.Range("A65535").End(3))
For Each Cll In sRng
    If Cll = Cll.Offset(1) And Cll.Offset(1) = Cll.Offset(2) Then
        If Rng Is Nothing Then
            Set Rng = Cll.EntireRow
        Else
            Set Rng = Union(Rng, Cll.EntireRow)
        End If
    End If
Next
Rng.Select
MsgBox "Chon xong du lieu./"
Thoat:
End Sub
 
Cho em bon chen 1 Code chọn dòng này với :D
Mã:
Sub Chondong()
    Dim sRng As Range, Rng As Range
On Error GoTo Thoat
Set sRng = Sheet1.Range("A2", Sheet1.Range("A65535").End(3))
For Each Cll In sRng
    If Cll = Cll.Offset(1) And Cll.Offset(1) = Cll.Offset(2) Then
        If Rng Is Nothing Then
            Set Rng = Cll.EntireRow
        Else
            Set Rng = Union(Rng, Cll.EntireRow)
        End If
    End If
Next
Rng.Select
MsgBox "Chon xong du lieu./"
Thoat:
End Sub
Sao bạn không cho thêm 1 dòng nữa để xóa dữ liệu luôn đi? Lại để người ta xin tiếp à, khà khà.
 
Ủa. Vậy bài #5 bạn kêu "ok" nghĩa là sao?
Bạn thao tác đúng như gợi ý, nó cho kết quả là gì thì đó là cái cần.
Bạn làm thế nào mà không đúng? Bạn xem file đính kèm nhé.
1. Công thức đó để oánh dấu các dòng tô màu xanh theo yêu cầu của bạn.
2. Lọc cột E với điều kiện =1, tức là lọc lấy các dòng tô màu xanh.
3. Chọn vùng dữ liệu, chọn cả dòng, rồi nhấn Alt ;
Mục đích là để chọn các dòng vừa lọc được, các dòng không được lọc thì không chọn.
Nó bằng với việc: Nhấn F5, Special..., Visible cells only, OK. (chọn các ô hiện lên).
4. Nhấn ctrl -
Là tổ hợp phím xóa dòng/ xóa ô.
 

File đính kèm

  • Dong 1_.xlsx
    9.4 KB · Đọc: 3
Sub Chondong() Dim sRng As Range, Rng As Range On Error GoTo Thoat Set sRng = Sheet1.Range("A2", Sheet1.Range("A65535").End(3)) For Each Cll In sRng If Cll = Cll.Offset(1) And Cll.Offset(1) = Cll.Offset(2) Then If Rng Is Nothing Then Set Rng = Cll.EntireRow Else Set Rng = Union(Rng, Cll.EntireRow) End If End If Next Rng.Select MsgBox "Chon xong du lieu./" Thoat: End Sub
Áp dụng theo cách của bác PacificPR thì kết quả file đính kèm của em ở sheet 1 sai ở các dòng 169-170; 173-174; ... kết quả đúng chỉ là dòng 169 và 173.
Ở sheet 2 em cần xóa dữ liệu được nhóm theo cột A, B và I.
Do công việc phát sinh hàng ngày nên em phải hỏi lại nhiều lần mong cả nhà thông cảm.
 

File đính kèm

  • xoadulieu_V2.xlsm
    43 KB · Đọc: 2
Áp dụng theo cách của bác PacificPR thì kết quả file đính kèm của em ở sheet 1 sai ở các dòng 169-170; 173-174; ... kết quả đúng chỉ là dòng 169 và 173.
Ở sheet 2 em cần xóa dữ liệu được nhóm theo cột A, B và I.
Do công việc phát sinh hàng ngày nên em phải hỏi lại nhiều lần mong cả nhà thông cảm.
Bạn thay dòng
If Cll = Cll.Offset(1) And Cll.Offset(1) = Cll.Offset(2) Then thành If cll <> cll.Offset(-1) And cll = cll.Offset(1) And cll.Offset(1) = cll.Offset(2) Then thử xem
 
Bạn thay dòng
If Cll = Cll.Offset(1) And Cll.Offset(1) = Cll.Offset(2) Then thành If cll <> cll.Offset(-1) And cll = cll.Offset(1) And cll.Offset(1) = cll.Offset(2) Then thử xem
Chạy ngon ạ.

P/s: em hỏi ngoài topic tý là em ở Hải Dương thấy các lớp học VBA trên diễn đàn chỉ có ở TP lớn. Vậy có lớp học online nào vào buổi tối hoặc chủ nhật không ạ?
 
Web KT
Back
Top Bottom