binhnguyenthanh
Thành viên chính thức


- Tham gia
- 18/8/09
- Bài viết
- 79
- Được thích
- 9
Dùng cột phụ E: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.
E2=IF(B2<>B1,1,0)
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ứ ạ.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 ^^
Trả lời: Có!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
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.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ứ ạ.
Columns(4).SpecialCells(xlCellTypeFormulas, 23).EntireRow.Delete
Em chưa hiểu ạ. Bác giải thích giúp em.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)
Nghĩa là các Cells tổng có dạng:Em chưa hiểu ạ. Bác giải thích giúp em.
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 ạ.=COUNTIF($B$1:$B1;B1)
Bạn thử vớ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 ạ.
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
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à.Cho em bon chen 1 Code chọn dòng này với
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
Ủa. Vậy bài #5 bạn kêu "ok" nghĩa là sao?chưa hiểu
Bạn làm thế nào mà không đúng? Bạn xem file đính kèm nhé.Kết quả không đúng
Á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.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
Bạn thay dòngÁ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.
Chạy ngon ạ.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 rồi ạ. Thanks bác.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