othanhquango
Thành viên hoạt động
- Tham gia
- 6/3/09
- Bài viết
- 138
- Được thích
- 7
bạn thử xem cách này ổn không? chỉ thực hiện recode thui.Các bạn giúp mình xóa các dòng không có dữ liệu bằng nút Xóa
Chân thành cảm ơn các bạn.
xem thêm file đính kèm.Private Sub CommandButton1_Click()
Range("A10:A113").AdvancedFilter Action:=xlFilterInPlace, Unique:=True
' phát này là tham khảo của bác Ndu.hihihi
iCount = iCount + 1
If iCount >= 1 Then CommandButton1.Enabled = False
End Sub
Private Sub CommandButton2_Click()
ActiveSheet.ShowAllData
iCount = iCount + 1
If iCount >= 1 Then CommandButton1.Enabled = True
End Sub
Các bạn giúp mình xóa các dòng không có dữ liệu bằng nút Xóa
Chân thành cảm ơn các bạn.
Thử chép code này vào nút xem:Các bạn giúp mình xóa các dòng không có dữ liệu bằng nút Xóa
Chân thành cảm ơn các bạn.
Public Sub xoa()
Application.ScreenUpdating = False
Dim vung As Range, i As Integer
Set vung = Range([c1], [c500].End(xlUp).Offset(-11, 0))
For i = vung.Rows.Count To 10 Step -1
If Cells(i, 3) = "" Then Rows(i).Delete
Next
Application.ScreenUpdating = True
End Sub
If vung.Rows.Count <= Application.Max(vung.Offset(0, 2)) Then Exit Sub
Vì dữ liệu của mình gồm 31 sheet dành cho 31 ngày, mỗi sheet tầm 1500 dòng. Không xóa thì file sẽ nặng và những ngày cuối tháng chạy sẽ ì ạch.Cái này để in? sao không giấu thôi mà là xóa
Mình thấy dữ liệu cột C đầy đủ nhất nên mình lấy cột này để dò, bạn đừng di chuyển cell cuối cùng ở cột C nhé (trong bài là Nguyễn Thị Xuân Uyên)
Góp với Cò 1 dòng lệnh:
QUOTE]PHP:If vung.Rows.Count <= Application.Max(vung.Offset(0, 2)) Then Exit Sub
Vậy đoạn code hoàn chỉnh sẽ ra sao bạn? Mình còn gà nên không biết thay thế vào chỗ nào, hic.
Có cách nào không dùng vòng lặp không Cò? chạy chậm quá!
Đúng là hơi chậm, dữ liệu của mình tầm 1500 dòng. Chờ ...
Rất chân thành cảm ơn các bạn.
Public Sub xoa()
Application.ScreenUpdating = False
Dim vung As Range, i As Integer, maxSTT As Long, EmptyR As Long
Set vung = Range([c1], [c50000].End(xlUp).Offset(-10, 0))
maxSTT = Application.Max(vung.Offset(0, -2))
If vung.Rows.Count - 9 <= maxSTT Then Exit Sub
EmptyR = vung.Offset(0, -2).Find(maxSTT).Row + 1
Range(EmptyR & ":" & vung.Rows.Count).Delete
Application.ScreenUpdating = True
End Sub
PHP:Public Sub xoa() Application.ScreenUpdating = False Dim vung As Range, i As Integer, maxSTT As Long, EmptyR As Long Set vung = Range([c1], [c50000].End(xlUp).Offset(-10, 0)) maxSTT = Application.Max(vung.Offset(0, -2)) If vung.Rows.Count - 9 <= maxSTT Then Exit Sub EmptyR = vung.Offset(0, -2).Find(maxSTT).Row + 1 Range(EmptyR & ":" & vung.Rows.Count).Delete Application.ScreenUpdating = True End Sub
Điều kiện là số thứ tự đánh đúng và đánh vừa đủ. Xoá 10 dòng hay 10.000 dòng tốc độ gần như nhau
(Chọt Cò già mà Cò già out mất tiêu)
Với những yêu cầu như trên, thông thường tôi làm như sau:- Nếu giữa các dòng có 1 dòng trống => xóa sai => nhấn xóa tiếp => sai tiếp ...
- Nếu số thứ tự trùng => xóa sai
- Xóa đâu mất tiêu dòng tổng cộng.
- Dòng đầu tiên không có dữ liệu => xóa sai.
Hic. Cảm ơn bạn.
Với tôi thì khác, trong file dữ liệu của tôi không bao giờ để xảy ra những trường hợp đó để phải giải quyết. Nhập liệu liên tục mà để dòng trống xen kẽ, số thứ tự đánh trùng, là những điều không thể chấp nhận được đối với 1 nhân viên nhập liệu.thunghi đã viết:Với những yêu cầu như trên, thông thường tôi làm như sau: . . .
Chơi gì bắt bí người ta thếTôi chẳng đã nói đánh số thứ tự đúng và vừa đủ còn gì? Dữ liệu nhập liên tục hàng ngày mà để dòng trống xen kẽ làm gì?
))
Public Sub xoahoai()
Application.ScreenUpdating = False
On Error Resume Next
Dim vung As Range
Set vung = Range([c10], [c500].End(xlUp).Offset(-11, 0))
If vung.SpecialCells(4).Rows.Count = 0 Then
Exit Sub
Else
vung.SpecialCells(4).Select
Selection.EntireRow.Delete
End If
Application.ScreenUpdating = True
End Sub
Tôi chẳng đã nói đánh số thứ tự đúng và vừa đủ còn gì? Dữ liệu nhập liên tục hàng ngày mà để dòng trống xen kẽ làm gì?
Còn dòng tổng bị mất là do sơ sót thật, bạn sửa dòng này
Set vung = Range([c1], [c50000].End(xlUp).Offset(-10, 0))
thành
Set vung = Range([c1], [c50000].End(xlUp).Offset(-11, 0))
Vẫn lấy cột C làm "nòng cốt" nhé bạn, không quan tâm các chuyện khác, cứ trong khu vực "cách ly" mà cột C trống là nó "thịt" ngay
Hy vọng nó chạy nhanh hơn vòng lặp
"Zdậy" mà không chịu nói sớm là cột nào nhập đủCột C thì hơi căng, vì chỗ mình có khi cột C không có dữ liệu. Sao bạn không lấy cột A (stt) không cần quan tâm nó là gì, chỉ cần biết nó khác null? Sửa giúp mình nha.Mã:Vẫn lấy cột C làm "nòng cốt" nhé bạn, không quan tâm các chuyện khác, cứ trong khu vực "cách ly" mà cột C trống là nó "thịt" ngay Hy vọng nó chạy nhanh hơn vòng lặp
Sub Button()
Application.ScreenUpdating = False
On Error Resume Next
RngD = Cells.Find("STT", , , 2).Address
RngC = Cells.Find("t?ng", , , 2)(, 50).Address
With Range(Range(RngD), Range(RngC))
.SpecialCells(2).EntireRow.Hidden = True
.SpecialCells(12).EntireRow.Delete
.EntireRow.Hidden = False
End With
Tôi chạy bằng code ngay trong file 31 sheet đó, không lỗi gì cả. Tôi không có thì giờ ghi lại bằng chứng, tuỳ bạn dùng được thì dùng, không thì thôi.Lỗi nè bạn ơi, do mình vừa gởi file gốc (.xls 31 sheet) và file mình ghi lại (ppt) làm "chứng cứ" nên quá 1m do đó không đính kèm được. Bạn chịu khó dowload về giúp mình xem nó sai chỗ nào hay là code bạn sai.