Xóa dòng trống trên bảng dữ liệu

Liên hệ QC

ngols

Thành viên mới
Tham gia
23/6/09
Bài viết
1
Được thích
0
Em có một bảng dữ liệu, khi trích xuất từ phần mềm ra thì rất nhiều dòng trống đan xen, dùng autofiter không thấy có tác dụng. các bác chỉ giúp em cách xóa các dòng trống đó với (dòng màu vàng). và các xóa các dòng bị lập (màu xanh) khi trích từ phần mềm ra hay có.e có một file ví dụ đính kèm
 

File đính kèm

  • vi du.xls
    17 KB · Đọc: 76
Bạn hãy thử với macro sau

PHP:
Option Explicit
Sub DeleteBlankRows()
 Dim Rng As Range, sRng As Range, dRng As Range
 Dim MyAdd As String, Tim As String
 
 Set Rng = Range("A4:A" & [B65500].End(xlUp).Row)
 Tim = [A2].Value
 Set sRng = Rng.Find(Tim, , xlFormulas, xlWhole)
 If Not sRng Is Nothing Then
   MyAdd = sRng.Address
   Do
      If dRng Is Nothing Then
         Set dRng = sRng.Offset(-1).Resize(3)
      Else
         Set dRng = Union(dRng, sRng.Offset(-1).Resize(3))
      End If
      Set sRng = Rng.FindNext(sRng)
   Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
 End If
 If Not dRng Is Nothing Then dRng.EntireRow.Delete
 Set dRng = Nothing
 Set Rng = Rng.SpecialCells(xlCellTypeBlanks)
 If Not Rng Is Nothing Then
   Set dRng = Rng.Offset(, 1).SpecialCells(xlCellTypeBlanks)
   If Not dRng Is Nothing Then dRng.EntireRow.Delete
 End If
End Sub

Chúc thành công mĩ mãn.
 
Mình thấy dùng công thức rồi lọc cũng ổn, tai ô J2 gõ chữ Loc, tại ô J3 nhập công thức:

={Sum(If(A4:I4<>"",1,0))} (Lưu ý công thức mảng nhập xong nhấn Ctrl+Shift+Enter)

Filldow toàn cột theo vùng có dữ liệu rồi AutoFilter vùng vừa thao tác(J2:Jn) các ô =0 , Delete dòng lọc, xoá nội dung cột tạm J. OK.
 
Lần chỉnh sửa cuối:
Bạn thử Code này
PHP:
Sub Delete_RowBlank()
    With Cells
        .SpecialCells(2).EntireRow.Hidden = True
        .SpecialCells(12).EntireRow.Delete
        .EntireRow.Hidden = False
    End With
End Sub
 

File đính kèm

  • Delete_RowBlank.rar
    6.1 KB · Đọc: 87
Bạn thử Code này
PHP:
Sub Delete_RowBlank()
    With Cells
        .SpecialCells(2).EntireRow.Hidden = True
        .SpecialCells(12).EntireRow.Delete
        .EntireRow.Hidden = False
    End With
End Sub
Anh Trung Chinh tiến bộ ghê ---> Chúc mừng anh trờ thành "Đại Gia"
Ẹc... Ẹc...
-------------
Em nghĩ code trên, anh thay Cells bằng ActiveSheet.UsedRange sẽ hay hơn (có thể là nhanh hơn cũng không chừng)
Ngoài ra còn phải lưu ý:
- Trường hợp người ta chỉ muốn xóa blank row trong 1 vùng nào đó, khi ấy ta phải xác định chính xác vùng hoạt động cho code
- Tưởng tưởng xem liệu có thể có lổi gì xảy ra hay không? (nhằm bẩy lổi chính xác)
 
Em nghĩ code trên, anh thay Cells bằng ActiveSheet.UsedRange sẽ hay hơn (có thể là nhanh hơn cũng không chừng)
Ngoài ra còn phải lưu ý:
- Trường hợp người ta chỉ muốn xóa blank row trong 1 vùng nào đó, khi ấy ta phải xác định chính xác vùng hoạt động cho code
- Tưởng tưởng xem liệu có thể có lổi gì xảy ra hay không? (nhằm bẩy lổi chính xác)

Em đang rất cần cái này, đặc biệt là những bảng do kết xuất từ phần mềm khác, nhờ sư phụ Ndu và mọi người hoàn thiện Code giúp cho.
 
Em đang rất cần cái này, đặc biệt là những bảng do kết xuất từ phần mềm khác, nhờ sư phụ Ndu và mọi người hoàn thiện Code giúp cho.
Code trên của bác TrungChinhs là ổn rồi, bạn còn cần gì hơn nữa? Bạn có thể thay Cells bởi một số đối tượng khác như sau:
Đối tượng | Vùng tác động của code
ActiveSheet.UsedRange|Toàn bộ vùng có dữ liệu trên sheet hiện hành
Range("A1:F100")|Vùng A1:F100 trên sheet hiện hành
Selection|Vùng đang chọn
Trong trường hợp thay Cells bởi Selection mà ta chọn 1 ô đơn trước khi chạy code thì tùy chọn này tương tự như chọn Cells, và có lẽ phải thay .EntireRow.Hidden = False bởi Cells.EntireRow.Hidden = False để tránh lỗi.
Ngoài ra bạn cũng có thể sử dụng InputBox để xác định vùng tác động trước khi chạy code.
Nếu bạn còn yêu cầu khác thì hãy đưa file lên để giải quyết vấn đề tốt hơn.
 
Lần chỉnh sửa cuối:
Trước khi chạy Code bạn tiến hành chọn vùng nào cần xoá dòng trống nhé (được sửa từ code của anh TrungChinh)

PHP:
Sub Delete_RowBlank()
    On Error Resume Next
    With Selection
        If .Cells.Count > 1 Then
        .SpecialCells(2).EntireRow.Hidden = True
        .SpecialCells(3, 23).EntireRow.Hidden = True
        .SpecialCells(12).EntireRow.Delete
        .EntireRow.Hidden = False
    End If
    End With
End Sub

Do mới tập nên code của em có gì chưa hoàn chỉnh, kính nhờ mọi người góp ý
 
Web KT

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

Back
Top Bottom