Cách xóa các dòng trống trong excel.

Liên hệ QC

Thảo Ara

Thành viên mới
Tham gia
7/3/17
Bài viết
21
Được thích
8
Nghề nghiệp
Trợ lý
Hi mọi người, bình thường khi xóa các dòng trống e vẫn thường làm như sau:
- Từ dòng có dữ liệu cuối cùng, chọn các dòng trống còn lại bằng tổ hợp :Ctrl + Shift + mũi tên xuống".
- Sau đó xóa hết bằng "Ctrl -"
- Bấm Lưu, tắt file mở lại là xong, khi kéo chuột nó sẽ kéo xún dòng cuối cùng có dữ liệu.

Huhu, vậy mà, file này em không làm được, lưu r mở lên nó còn để nhiều dòng trống thêm, ko biết là bị lỗi gì, em đã thử cop bảng có dữ liệu qua sheet khác, nó lại tự động tạo dòng trống, ko biết là bị lỗi gì.

Khi dùng excel, em rất không thích việc file bị nặng kí, nên lúc nào cũng tối ưu hóa, các thanh kéo ngang dọc phải vừa vặn với cột cuối dữ liệu, nên là việc này làm em rất khó chịu và gây nặng file. Các anh chị xem giúp em với ạ. Tks mn nhiêu.
 

File đính kèm

  • Book3.xlsx
    1.8 MB · Đọc: 14
Hi mọi người, bình thường khi xóa các dòng trống e vẫn thường làm như sau:
- Từ dòng có dữ liệu cuối cùng, chọn các dòng trống còn lại bằng tổ hợp :Ctrl + Shift + mũi tên xuống".
- Sau đó xóa hết bằng "Ctrl -"
- Bấm Lưu, tắt file mở lại là xong, khi kéo chuột nó sẽ kéo xún dòng cuối cùng có dữ liệu.

Huhu, vậy mà, file này em không làm được, lưu r mở lên nó còn để nhiều dòng trống thêm, ko biết là bị lỗi gì, em đã thử cop bảng có dữ liệu qua sheet khác, nó lại tự động tạo dòng trống, ko biết là bị lỗi gì.

Khi dùng excel, em rất không thích việc file bị nặng kí, nên lúc nào cũng tối ưu hóa, các thanh kéo ngang dọc phải vừa vặn với cột cuối dữ liệu, nên là việc này làm em rất khó chịu và gây nặng file. Các anh chị xem giúp em với ạ. Tks mn nhiêu.
Có file đính kèm không bạn? Vụ này thấy tưởng đơn giản chứ khó xử lắm. Excel đôi khi cũng có những bệnh bất trị.
 
Upvote 0
Hi mọi người, bình thường khi xóa các dòng trống e vẫn thường làm như sau:
- Từ dòng có dữ liệu cuối cùng, chọn các dòng trống còn lại bằng tổ hợp :Ctrl + Shift + mũi tên xuống".
- Sau đó xóa hết bằng "Ctrl -"
- Bấm Lưu, tắt file mở lại là xong, khi kéo chuột nó sẽ kéo xún dòng cuối cùng có dữ liệu.

Huhu, vậy mà, file này em không làm được, lưu r mở lên nó còn để nhiều dòng trống thêm, ko biết là bị lỗi gì, em đã thử cop bảng có dữ liệu qua sheet khác, nó lại tự động tạo dòng trống, ko biết là bị lỗi gì.

Khi dùng excel, em rất không thích việc file bị nặng kí, nên lúc nào cũng tối ưu hóa, các thanh kéo ngang dọc phải vừa vặn với cột cuối dữ liệu, nên là việc này làm em rất khó chịu và gây nặng file. Các anh chị xem giúp em với ạ. Tks mn nhiêu.
Cho mình hỏi là các dòng trống của bạn chỉ nằm ở dưới cùng của bảng dữ liệu hay còn có 1 số nằm ở giữa bảng dữ liệu nữa?
 
Upvote 0
HI mình mới sửa đính kèm file ạ,

@xuongrongdat: dòng cuối bạn nhé, mình cẩn thận lắm, ko bao h để dòng trống chính giữa bảng, thậm chí mình còn ko merge nữa cơ.
 
Upvote 0
Bạn sử dụng ADODB cho nhanh nhé, bạn hãy thử vận dụng thủ tục dưới đây:

RemoveRowsBlank Thamsố1, Thamsố2

Thamsố1 là ô bắt đầu thực hiện
Thamsố2 là các cột muốn duyệt, nếu nhỏ hơn 1 là duyệt tất cả cột.

Copy code dưới vào một Module, sau đó:

Ví dụ Vận dụng:
1. Nếu dữ liệu cột B không rỗng thì: RemoveRowsBlank [A2], "B"
Hoặc: RemoveRowsBlank [A2], 2 hoặc RemoveRowsBlank [B2], 1​
2. Xác định các cột, ngăn cách bằng dấu phẩy:
RemoveRowsBlank [A2], "B,D:H,J,M:O"​
RemoveRowsBlank [A2], 0 sẽ thực hiện duyệt tất cả các cột.
----------------------
JavaScript:
Sub RemoveRowsBlank(Optional ByVal Target As Range, Optional ByVal ColumnsCheckNull As String = "1")
  Dim Arr, cdt As String
  Dim r&, c%, cc%, LC&, LR&, rng As Range
  On Error Resume Next
  With Target.Parent
    LR = .Cells.Find("*", after:=.Cells(1), LookIn:=xlFormulas, LookAt:=xlWhole, SearchDirection:=xlPrevious, SearchOrder:=xlByRows).row- Target.row + 1
    LC = .Cells.Find("*", after:=.Cells(1), LookIn:=xlFormulas, LookAt:=xlWhole, SearchDirection:=xlPrevious, SearchOrder:=xlByColumns).column - Target.Column + 1
    Set rng = Target.Resize(LR, LC)
    If LR <= 2 Or LC <= 0 Then Exit Sub
    On Error Resume Next
    Dim CN As Object, Rs As Object
    Set CN = VBA.Interaction.CreateObject("ADODB.Connection")
    If Application.Version >= 12 Then
      CN.Open ("provider=Microsoft.ACE.OLEDB.12.0;data source='" & .Parent.FullName & "';mode=Read;Extended properties=""Excel 12.0;HDR=No"";")
    Else
      CN.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" & .Parent.FullName & "';mode=Read;Extended Properties=""Excel 8.0;HDR=No"";")
    End If
    If ColumnsCheckNull<= "0" Then
      For c = 1 To LC
        cdt = cdt & IIf(cdt = "", "", " OR ") & "(F" & CStr(c) & " IS NOT NULL)"
      Next
    Else
      Dim SP() As String, rr%
      SP = Split(ColumnsCheckNull, ",")
      For c = 0 To UBound(SP)
        If VBA.IsNumeric(SP(c)) Then
          cdt = cdt & IIf(cdt = "", "", " OR ") & "(F" & CStr(SP(c)) & " IS NOT NULL)"
        Else
          For cc = Columns(SP(c)).column To Columns(SP(c)).column + Columns(SP(c)).Columns.count - 1
            If cc - Target.row + 1 > 0 Then
              cdt = cdt & IIf(cdt = "", "", " OR ") & "(F" & CStr(cc - Target.row + 1) & " IS NOT NULL)"
            End If
          Next
        End If
      Next
    End If
    Err.Clear
    Set Rs = CN.Execute("SELECT * FROM [" & .name & "$" & rng.address(0, 0) & "] WHERE (" & cdt & ")")
    If Err.Number = 0 Then
      If Not Rs.EOF Then
        r = Target.CopyFromRecordset(Rs)
      End If
    End If
    Rs.Close
    If LR - r > 0 And r > 0 Then
      Target(r + 1, 1).Resize(LR - r, LC).ClearContents
    End If
    Set CN = Nothing: Set Rs = Nothing
  End With
Ends:
  On Error GoTo 0
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Hi mọi người, bình thường khi xóa các dòng trống e vẫn thường làm như sau:
- Từ dòng có dữ liệu cuối cùng, chọn các dòng trống còn lại bằng tổ hợp :Ctrl + Shift + mũi tên xuống".
- Sau đó xóa hết bằng "Ctrl -"
- Bấm Lưu, tắt file mở lại là xong, khi kéo chuột nó sẽ kéo xún dòng cuối cùng có dữ liệu.

Huhu, vậy mà, file này em không làm được, lưu r mở lên nó còn để nhiều dòng trống thêm, ko biết là bị lỗi gì, em đã thử cop bảng có dữ liệu qua sheet khác, nó lại tự động tạo dòng trống, ko biết là bị lỗi gì.

Khi dùng excel, em rất không thích việc file bị nặng kí, nên lúc nào cũng tối ưu hóa, các thanh kéo ngang dọc phải vừa vặn với cột cuối dữ liệu, nên là việc này làm em rất khó chịu và gây nặng file. Các anh chị xem giúp em với ạ. Tks mn nhiêu.
Bạn cho hiện hết comment lên sẽ thấy nguyên nhân.
 
Upvote 0
@ huuthang_bd: Ôi mừng quá, lúc đầu mình cũng nghi nghi, do mình ko bao h dùng comment trong báo cáo excel, mà h bạn nói mình mới nhớ ra file này gốc từ chị nhân viên cũ, hihi.
Cảm ơn bạn nhiều nhaaaaaaaaa. Mình làm đc rồi.
@HeSanbi: Này là công thức hả bạn, hi để mình nghiên cứu cái ADODB này, mình thích tìm hiểu excel lắm, do mình toàn xài excel, tks bạn nhé.
 
Upvote 0
@@HeSanbi: Này là công thức hả bạn, hi để mình nghiên cứu cái ADODB này, mình thích tìm hiểu excel lắm, do mình toàn xài excel, tks bạn nhé.
Thủ tục sử dụng VBA, không phải công thức. Bạn muốn công thức thì phải viết lại.

Bạn chỉ cần copy vào module, thực hiện xong xóa module đi.
Muốn dữ lại thực hiện về sau thì bạn phải lưu file ở dạng xlsb, xlsm
 
Upvote 0
@ huuthang_bd: Ôi mừng quá, lúc đầu mình cũng nghi nghi, do mình ko bao h dùng comment trong báo cáo excel, mà h bạn nói mình mới nhớ ra file này gốc từ chị nhân viên cũ, hihi.
Cảm ơn bạn nhiều nhaaaaaaaaa. Mình làm đc rồi.
@HeSanbi: Này là công thức hả bạn, hi để mình nghiên cứu cái ADODB này, mình thích tìm hiểu excel lắm, do mình toàn xài excel, tks bạn nhé.
Mình cũng mới biết cái "bịnh" này luôn á. Cám ơn bạn và anh @huuthang_bd luôn. :D

Bạn nghiên cứu Excel cho ngon lành rồi xộc vào VBA luôn nhé ! Cái anh @HeSanbi là ảnh lập trình dữ tợn lắm rồi, hi.
 
Upvote 0
@Thảo Ara

Tôi đã viết thành Hàm UDF, bạn có thể tham khảo:
 
Upvote 0
Web KT

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

Back
Top Bottom