DeleteEmptyRows (1 người xem)

  • Thread starter Thread starter Thien
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

Thien

Thành viên thường trực
Tham gia
23/6/06
Bài viết
352
Được thích
113
Hi ! cả nhà
Mình có 1 sheet chứa khoảng 40.000 dòng, nhưng không liên tục, có lúc cách 5 dòng mới có dữ liệu, có lúc cách 30 dòng mới có dữ liệu.
Mình muốn bỏ tất cả các dòng không có dữ liệu với 3 cách sau:

1/ dùng macro:
PHP:
Sub DeleteRowsThatLookEmptyinColA()
  Application.ScreenUpdating = False
  Application.Calculation = xlCalculationManual   'pre XL97 xlManual'
  Dim rng As Range, ix As Long
  Set rng = Intersect(Range("A:A"), ActiveSheet.UsedRange)
  For ix = rng.Count To 1 Step -1
      If Trim(Replace(rng.Item(ix).Text, _
                Chr(160), Chr(32))) = "" Then
        rng.Item(ix).EntireRow.Delete
      End If
  Next
done:
  Application.Calculation = xlCalculationAutomatic
  Application.ScreenUpdating = True
End Sub

2/ dùng macro:
PHP:
Sub DelEmptyRows()
  Dim i As Long, iLimit As Long 'updated for XL2003 2006-01-31'
  iLimit = ActiveSheet.UsedRange.Rows.Count

  Application.ScreenUpdating = False
  Application.Calculation = xlCalculationManual   'pre XL97 xlManual'
  For i = iLimit To 1 Step -1
    If Application.CountA(Cells(i, 1).EntireRow) = 0 Then
       Cells(i, 1).EntireRow.Delete
    End If
  Next i
   Application.Calculation = xlCalculationAutomatic
   Application.ScreenUpdating = True
   iLimit = ActiveSheet.UsedRange.Rows.Count   'attempt to fix lastcell'
   ActiveWorkbook.Save
End Sub
3/chọn auto filler , chọn blanks để lọc ra các dòng không có dữ liệu rồi delete nhưng không được.

Mong các đại ca chỉ giáo

Xin đa tạ
 
Chỉnh sửa lần cuối bởi điều hành viên:
Cách thứ 3 thì nhanh hơn cả và gọn gàng nữa.
Nhưng đã không làm cách thứ 1 và 2 thì thôi chứ đã làm cái đó thì nên thêm một đoạn tính phần trăm thực hiện nữa cho nó thêm phần chuyên nghiệp

Mã:
For ............
Application.StatusBar = "Phan tram hoan thanh: " & Round((ilimit - i) * 100 / ilimnit, 0) & " %"
...........
Next i 
Application.StatusBar = False
 
Upvote 0
Còn một cách khác

Vâng, đúng như vậy. Bạn có thể dùng công cụ ASAP bạn vào mục
Columns/Rows; Conditional row and column... và bạn có thể làm nhiều điều với các hàng và các cột theo các điều kiện sẵn có! Vả lại ASAP là công cụ miễn phí, khá tốt.
http://www.asap-utilities.com/download-asap-utilities.php

Lê Văn Duyệt
 
Upvote 0
Còn 1 sub này cũng xóa được các dòng trống, nội dung gần tương tự mấy sub trên:
Mã:
Sub DelEmptyRow()
    Rng = Selection.Rows.Count
    ActiveCell.Offset(0, 0).Select
    Application.ScreenUpdating = False
        For i = 1 To Rng
                If ActiveCell.Value = "" Then
                        Selection.EntireRow.Delete
                Else
                        ActiveCell.Offset(1, 0).Select
                End If
        Next i
                Application.ScreenUpdating = True
End Sub
 
Upvote 0
Xóa nhóm dòng

Theo như đề bài thì xóa từng dòng không phải là tối ưu?!
Vì cách 5 - 30 dòng mới có dòng dữ liệu
mình có cái tương tự để xóa nhanh hơn: Xóa nhóm dòng
/(/hưng macro này còn phải chỉnh mới đúng theo í của người khởi xướng!

PHP:
Sub XoaTrung()
 Dim iCuoi As Long, iBDau As Long, iXoa As Long
 Application.ScreenUpdating = False
 
 Sheets("S4").Select:    Schu = ""
 iCuoi = Range("E65536").End(xlUp).Row
 For iZ = iCuoi To 2 Step -1
 
    StrC = "E" & CStr(iZ):          Range(StrC).Select
    With Selection
        If .Value <> Schu Then
            Schu = .Value
            If iXoa > 0 Then
                Range("D" & CStr(.Row + 2) & ":E" & CStr(iBDau)).Delete Shift:=xlUp  ' <= sửa lại!'
                iXoa = 0
            Else
                iBDau = .Row
            End If
            
        Else
            iXoa = iXoa + 1
            
        End If
    End With
 Next iZ
 
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn thử cái ni nha!

Để xóa các dòng mà tại ô A(i) không chứa dữ liệu!
PHP:
Sub XoaTrong()
Dim iCuoi As Long, iBDau As Long, iXoa As Long
Application.ScreenUpdating = False

Sheets("Sheet2").Select: Schu = "A"
iCuoi = Range("E65536").End(xlUp).Row

For iZ = iCuoi To 2 Step -1

StrC = "A" & CStr(iZ): Range(StrC).Select
With Selection
    If Len(.Value) < 1 Then
        If iBDau = 0 Then             iBDau = .Row

    Else
        If iBDau > 0 Then
            Range(iBDau & ":" & (.Row + 1)).Delete shift:=xlUp
            iBDau = 0
    End If:          End If
End With
Next iZ

End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Dear Thien,
-----------
Theo mình, nếu công việc xoá các dòng trống như thế này không phải là thường xuyên thì bạn không nhất thiết phải cần đến lập trình.
Dù lập trình hay không thì bạn cũng nên tối ưu lại bảng cơ sở dữ liệu của bạn thật tốt: tạo "field name" cho bảng dữ liệu (khi Ctrl+Shift+* phải chọn được đúng vùng dữ liệu làm việc, các cột nào không cần thiết thì xoá đi hoặc đặt ở vị trí cuối bảng, hạn chế màu (mè),... cụ thể mình đã tối ưu lại bảng cơ sở dữ liệu của bạn:
1. Insert thêm một dòng trước ròng thứ 7, mục đích để ngăn cách với phần Header của bảng
2. Xoá cột F và cột H (hai cột trống, không có tác dụng)
3. Bỏ tô màu toàn bộ bảng, bổ xung cột ghi chú thay vì tô màu
Để xoá được các dòng trống, dù làm thủ công hay kỹ thuật lập trình, bạn phải có dấu hiệu nhận ra chúng. Có nhiều cách giải quyết khác nhau, song theo mình đơn giản và nhanh nhất là sử dụng thêm cột phụ. Cột này sẽ kiểm tra dòng hiện hành nếu trống sẽ có kết quả là 0, đựa vào hàm
=CELL("contents";<reference>)
Bạn lưu ý <reference> là những ô liên tục và có ý nghĩa bắt buộc phải có giá trị. Trong ví dụ của bạn mình chọn các ô trên dòng hiện hành từ cột D đến cột H (do dữ liệu của bạn chưa được tối ưu).
Ví dụ, sau khi bạn đã chèn thêm 1 dòng trước dòng số 7 và xoá đi 2 cột, tại ô O10 = CELL("contents";D10:H10) rồi copy công thức này cho các ô còn lại trong bảng trên cột O.
Bây giờ bạn chỉ việc AutoFilter cột O với giá trị filter = 0. Đó là các dòng trống.
Bạn có thể dễ dàng tạo ra một macro để xoá tự động các dòng này?
Chúc bạn thành công!
 
Lần chỉnh sửa cuối:
Upvote 0
OverAC đã viết:
For ............
Application.StatusBar = "Phan tram hoan thanh: " & Round((ilimit - i) * 100 / ilimnit, 0) & " %"
...........
Next i
Application.StatusBar = False

Cái của Bình giới thiệu rất hay, nhưng chỉ ý nghĩa với bảng tính lớn, còn nhỏ thì chưa kịp nhìn thấy thì đã xong rồi. --=0
Tiện thể Bình chỉ dẫn cho mọi người về ứng dụng xử lý màn hình đi.
Cám ơn.
 
Upvote 0
Xóa những CELLS trống

Tôi xóa những Cells trống trong bảng như thế này, các bạn có thể xem tham khảo.
 
Lần chỉnh sửa cuối:
Upvote 0
148btx đã viết:
Tôi xóa những Cells trống trong bảng như thế này, các bạn có thể xem tham khảo.
Mã:
Sub DeleteEmtyCells()
k = 3 'Cho so luong gia tri sang phai
l = 20 'Cho so luong gia tri xuong duoi
Application.ScreenUpdating = False
For i = 0 To k Step 1
    Range("C6").Select
    ActiveCell.Offset(0, i).Range("A1").Select
    For j = 1 To l
        If ActiveCell = "" Then
            Selection.Delete Shift:=xlUp
        Else
            ActiveCell.Offset(1, 0).Range("A1").Select
        End If
    Next j
Next i
End Sub
Dear 148btx,
------------
Không ổn lắm, mình tăng l=5000, một lúc thấy CPU Usage: 100%, xanh lè!
 
Lần chỉnh sửa cuối:
Upvote 0
còn cách này nữa tôi thấy rất hay:
Mã:
Option Explicit
Sub DeleteEmptyRows()
Dim i As Integer
Dim LastRow As Integer
Application.ScreenUpdating = False
LastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count
For i = LastRow To 1 Step -1
    If Application.CountA(Rows(i)) = 0 Then Rows(i).Delete
Next i
Application.ScreenUpdating = True
End Sub
 
Upvote 0
Phải chăng code này chỉ xóa những hàng ko có DL

nvson đã viết:
còn cách này nữa tôi thấy rất hay:
Mã:
Option Explicit
Sub DeleteEmptyRows()
Dim i As Integer
Dim LastRow As Integer
Application.ScreenUpdating = False
LastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count
For i = LastRow To 1 Step -1
    If Application.CountA(Rows(i)) = 0 Then Rows(i).Delete
Next i
Application.ScreenUpdating = True
End Sub
Bạn ơi, phải chăng code trên chỉ xóa đi những hàng không có dữ liệu nào nằm trong ô thuộc hàng đó, đúng hông dậy? (nghĩa là hàng đó hoàn toàn không có dữ liệu đó mà)

Xin bạn giải thích thêm về code trên nhá! Thanks for Ure idea!

Nhân tiện xin các U cho mình hỏi là: Làm sao có thể xóa dòng theo điều kiện đưa ra?

VD: Giả sử tại ô A1 có Rượu, A11 có Đồ Nhắm, A1122 có Tiếp Viên..., thì nếu tại bất cứ cell nào trong cột A đó có 1 trong những điều kiện kể trên thì xóa toàn bộ hàng đó đi.
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn ơi, phải chăng code trên chỉ xóa đi những hàng không có dữ liệu nào nằm trong ô thuộc hàng đó, đúng hông dậy? (nghĩa là hàng đó hoàn toàn không có dữ liệu đó mà)

Xin bạn giải thích thêm về code trên nhá! Thanks for Ure idea!

Nhân tiện xin các U cho mình hỏi là: Làm sao có thể xóa dòng theo điều kiện đưa ra?

VD: Giả sử tại ô A1 có Rượu, A11 có Đồ Nhắm, A1122 có Tiếp Viên..., thì nếu tại bất cứ cell nào trong cột A đó có 1 trong những điều kiện kể trên thì xóa toàn bộ hàng đó đi.

Câu hỏi trên đây đã rất lâu nhưng chưa thấy được sự hồi âm. Please!
 
Upvote 0
Câu hỏi trên đây đã rất lâu nhưng chưa thấy được sự hồi âm. Please!
Ví dụ: Có 1 range nằm ở sheet khác có tên là danhmuc gồm, Rượu, Thuốc, Bia...
Ta dùng câu
If Application.Countif(danhmuc, "A" & i)> 0 Then Rows(i).Delete
PHP:
Option Explicit
Sub DeleteEmptyRows()
Dim i As Integer
Dim LastRow As Integer
Application.ScreenUpdating = False
LastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count
For i = LastRow To 1 Step -1
    If Application.Countif(danhmuc, "A" & i)> 0 Then Rows(i).Delete
Next i
Application.ScreenUpdating = True
End Sub
 
Upvote 0
Ví dụ: Có 1 range nằm ở sheet khác có tên là danhmuc gồm, Rượu, Thuốc, Bia...
Ta dùng câu
If Application.Countif(danhmuc, "A" & i)> 0 Then Rows(i).Delete
PHP:
Option Explicit
Sub DeleteEmptyRows()
Dim i As Integer
Dim LastRow As Integer
Application.ScreenUpdating = False
LastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count
For i = LastRow To 1 Step -1
    If Application.Countif(danhmuc, "A" & i)> 0 Then Rows(i).Delete
Next i
Application.ScreenUpdating = True
End Sub
Xóa theo 1 điều kiện nào đó ta dùng AutoFilter, xóa cái rẹt là xong! Làm bằng tay cũng được
 
Upvote 0
Ví dụ: Có 1 range nằm ở sheet khác có tên là danhmuc gồm, Rượu, Thuốc, Bia...
Ta dùng câu
If Application.Countif(danhmuc, "A" & i)> 0 Then Rows(i).Delete
PHP:
Option Explicit
Sub DeleteEmptyRows()
Dim i As Integer
Dim LastRow As Integer
Application.ScreenUpdating = False
LastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count
For i = LastRow To 1 Step -1
If Application.Countif(danhmuc, "A" & i)> 0 Then Rows(i).Delete
Next i
Application.ScreenUpdating = True
End Sub


Bạn ơi mình cũng đang ứng dụng đoạn code này của bạn nhưng danhmuc trong counif này là tên sheet hay là gì mà sao mình run macro cứ bị báo lỗi hoài
 
Upvote 0
Hỏi lại lần nữa cho rõ: Bạn muốn làm điều gì đối với file này vậy?[/QUOTEA`

Mình loay hoay tìm cách này cách kia để cuối cùng ra được cái report chỉ toàn line item thôi nhưng phải gắn vendor code vô tương ứng từng dòng line item thì mới biết Document đó của vendor nào, bạn xem trong sheet layout mình mới insert vô file để dễ hiểu hơn nhé

(ua sao minh ko gui file duoc, minh het quota gui file roi, lam sao de delete nhung file da upload, hichic)
 
Upvote 0
Bạn ơi mình set danhmuc thi bị báo lỗi variable not define. Mình gửi file để bạn tham khảo

Mượn bài của Sư Phụ ndu96081631 để giúp bạn một cách tổng quát của bài này!

Bạn tạo 1 module rồi chép code dưới đây vào sẽ giải quyết được mọi vấn đề về xóa dòng trống của bạn.

PHP:
Function RemoveBlanksRow(ByVal SrcRng As Range)
  Dim SrcArr, DesArr, i As Long, j As Long, lRow As Long, k As Long
  On Error GoTo ExitFunc
  RemoveBlanksRow = SrcRng.Value
  SrcArr = SrcRng.Value
  RemoveBlanksRow = SrcArr
  ReDim DesArr(1 To UBound(SrcArr, 1), 1 To UBound(SrcArr, 2))
  For i = 1 To UBound(SrcArr, 1)
    lRow = lRow + 1: k = 0
    For j = 1 To UBound(SrcArr, 2)
      If SrcArr(i, j) = "" Then k = k + 1
      DesArr(lRow, j) = SrcArr(i, j)
    Next
  If k = UBound(SrcArr, 2) Then lRow = lRow - 1
  Next
  RemoveBlanksRow = DesArr
ExitFunc:
End Function
 
 
 
Sub Main()
  With Sheet2.UsedRange
    .Value = RemoveBlanksRow(.Cells)
  End With
End Sub

Bạn chạy Sub Main nhé!

Tham khảo nguồn tại đây: http://www.giaiphapexcel.com/forum/...hêm-Sửa-Xóa-trên-ListView&p=305727#post305727
 
Upvote 0
Cảm ơn bạn nhưng mình cũng chưa làm được
Vì mình không load file lên được nên chắc diễn đạt chưa rõ nghĩa

Dữ liệu của mình thể hiện tất cả transaction payment cho từng vendor, format
Phần main item có thông tin của vendor
cách vài dòng rồi đến
Phần line item có thông tin của document và amount .....

Cứ liên tiếp như thế cho nhiều vendor

Mình muốn xem tất cả transaction payment có gắn vendor tương ứng (chỉ cần vendor code là đủ, không cần nhiều thông tin như là địa chỉ, TP....)

Vì vậy, ứng dụng delete dòng trống chỉ mới giải quyết 1/2 vấn đề là các vendor liên tục không có dòng trống nhưng dữ liệu vẫn nằm ở dạng main item rồi đến line item
Giờ mình muốn chèn thêm cot vendor o line item, rồi delete luôn main item

Nhờ các bạn chỉ giúp

(PS: nhân tiện chỉ giúp mình làm sao load file nua nếu bị thông báo exceed quota)

Cam on nhieu
 
Upvote 0
Với mình thì bài này không cần làm phức tạp thêm, mình làm như sau cũng ngon:

1.Chèn thêm 1 dòng trên cùng coi như tiêu đề.
2.Tại ô I2 nhập công thức: =If(Counta(A2:H2)>0,Max($i$1:I1)+1,"") rồi filldown
3.Chép cột I rồi dán lại bằng Paste Speacial (Value) (Nhằm xoá công thức)
4.Sort cột A đến cột I theo cột I rồi xoá cột I là xong
 
Upvote 0
Với mình thì bài này không cần làm phức tạp thêm, mình làm như sau cũng ngon:

1.Chèn thêm 1 dòng trên cùng coi như tiêu đề.
2.Tại ô I2 nhập công thức: =If(Counta(A2:H2)>0,Max($i$1:I1)+1,"") rồi filldown
3.Chép cột I rồi dán lại bằng Paste Speacial (Value) (Nhằm xoá công thức)
4.Sort cột A đến cột I theo cột I rồi xoá cột I là xong

Thanks bạn, mình sẽ áp dụng để xoá dòng trống, nhưng làm cách này cũng chưa giải quyết được vấn đề của mình là copy vendor xuống những dòng line item.

Vendor DocumentNo Doc. Date Amount Yn doc. curr. Curr.
1200016 2000047750 05.05.2011 1849956353 VND

/TABLE]
Nhờ bạn chỉ thêm
 
Lần chỉnh sửa cuối:
Upvote 0
Thanks bạn, mình sẽ áp dụng để xoá dòng trống, nhưng làm cách này cũng chưa giải quyết được vấn đề của mình là copy vendor xuống những dòng line item.
Vendor DocumentNo Doc. Date Amount Yn doc. curr. Curr. 1200016 2000047750 05.05.2011 1,849,956,353 VND
Nhờ bạn chỉ thêm
Bạn không đưa file lên thì dù có nói gì cũng chẳng ai hiểu đâu
 
Upvote 0
hic hic... mình không biết sao cứ bị exceed quota hoài, file mình zip lai chỉ có 11KB mà cũng ko lên dc
 
Upvote 0
hic hic... mình không biết sao cứ bị exceed quota hoài, file mình zip lai chỉ có 11KB mà cũng ko lên dc

Trong hồ sơ của bạn, bạn chọn vào nút "Chọn lệnh", rồi chọn "Điều chỉnh chi tiết hồ sơ", tại "My Setting" bạn chọn "File Đính Kèm". Khi bảng Thống kê đính kèm, bạn check những File nào đó bạn muốn remove (nên chọn những File không có giá trị học tập), rồi bấm vào nút "Xóa Bài Đánh Dấu".

Chúc thành công.
 
Upvote 0
A`, cảm ơn bạn nhiều, giờ mình tải file lên được rồi, bạn xem sheet layout là cái kết quả mình muốn
 

File đính kèm

Upvote 0
A`, cảm ơn bạn nhiều, giờ mình tải file lên được rồi, bạn xem sheet layout là cái kết quả mình muốn

Trời, cái này quá dễ bạn ơi, chỉ cần dùng AutoFilter là được, bạn Insert thêm 1 hàng đầu tiên với tiêu đề
Vendor DocumentNo Doc. Date Amount Yn doc. curr. Curr.
Tô khối dòng tiêu đề này rồi bấm vào Filter, bạn chỉ cần lọc đúng vào DocumentNo thôi, không cần lọc ở đâu nữa, bạn chọn Blank và DocumentNo rồi xóa những cái này. Sau đó cho show all lại là ra cái bạn muốn.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Nhưng mà phải copy vendor xuống trước chứ cột vendor không có sẵn dữ liệu đâu bạn ơi, vậy mình có cách nào copy tự động không?
 
Upvote 0
Nhưng mà phải copy vendor xuống trước chứ cột vendor không có sẵn dữ liệu đâu bạn ơi, vậy mình có cách nào copy tự động không?

Chỉ có bạn mới biết Vender là cái gì và chép vào đâu chứ ai mà biết được nó là cái gì chứ! Còn File của bạn tôi đã gửi lên ở bài trước đấy, xem file nhé.
 
Upvote 0
1.Bạn thêm dòng tiêu đề
2.Bạn nhập công thức sau vào ô K6 (Tạm mượn cột K) rồi filldown hết dữ liệu
=IF(AND(B5<>"",B5="DocumentNo"),E1,IF(B5<>"",K5,""))&IF(AND(A5<>"",A6=""),"Vendor","")
3.Chép cột K và dán Speacial (Value) vào cột A
4.AutoFilter và chọn Blank cột B rồi chon tất và Delete hết
5.Xem kết quả
 
Lần chỉnh sửa cuối:
Upvote 0
Qua điện thoại, tôi hiểu bạn QueAn muốn cần giúp đỡ vấn đề gì rồi, nhưng do trình độ ABC nên tôi gửi lại File lên và nhờ các thành viên giúp đỡ.

Yêu cầu là như vầy: Tại sheet xoadong, Copy số Vendor tại cột E (tôi đã tô màu cam) vào cột A (tôi tô màu xanh) tương ứng với số DocumentNo tại cột B (tôi tô màu xanh lá cây).

Tôi nghĩ chỉ có dùng Code mới thực hiện được, chứ làm thủ công thì ẹc... ẹc... Mong các cao thủ giúp đỡ!
 

File đính kèm

Upvote 0
1.Bạn thêm dòng tiêu đề
2.Bạn nhập công thức sau vào ô K6 (Tạm mượn cột K) rồi filldown hết dữ liệu
=IF(AND(B5<>"",B5="DocumentNo"),E1,IF(B5<>"",K5,""))&IF(AND(A5<>"",A6=""),"Vendor","")
3.Chép cột K và dán Speacial (Value) vào cột A
4.AutoFilter và chọn Blank cột B rồi chon tất và Delete hết
5.Xem kết quả

Đúng là dùng công thức cũng giải quyết được vấn đề này rồi. Cám ơn Anh Seland.
 
Upvote 0
Cảm ơn diễn đàn, mình đã giải quyết được vấn đề rồi.
 
Upvote 0
Xoá dòng cần xoá!!!

Dear Thien,
-----------
Theo mình, nếu công việc xoá các dòng trống như thế này không phải là thường xuyên thì bạn không nhất thiết phải cần đến lập trình.
Dù lập trình hay không thì bạn cũng nên tối ưu lại bảng cơ sở dữ liệu của bạn thật tốt: tạo "field name" cho bảng dữ liệu (khi Ctrl+Shift+* phải chọn được đúng vùng dữ liệu làm việc, các cột nào không cần thiết thì xoá đi hoặc đặt ở vị trí cuối bảng, hạn chế màu (mè),... cụ thể mình đã tối ưu lại bảng cơ sở dữ liệu của bạn:
1. Insert thêm một dòng trước ròng thứ 7, mục đích để ngăn cách với phần Header của bảng
2. Xoá cột F và cột H (hai cột trống, không có tác dụng)
3. Bỏ tô màu toàn bộ bảng, bổ xung cột ghi chú thay vì tô màu
Để xoá được các dòng trống, dù làm thủ công hay kỹ thuật lập trình, bạn phải có dấu hiệu nhận ra chúng. Có nhiều cách giải quyết khác nhau, song theo mình đơn giản và nhanh nhất là sử dụng thêm cột phụ. Cột này sẽ kiểm tra dòng hiện hành nếu trống sẽ có kết quả là 0, đựa vào hàm
=CELL("contents";<reference>)
Bạn lưu ý <reference> là những ô liên tục và có ý nghĩa bắt buộc phải có giá trị. Trong ví dụ của bạn mình chọn các ô trên dòng hiện hành từ cột D đến cột H (do dữ liệu của bạn chưa được tối ưu).
Ví dụ, sau khi bạn đã chèn thêm 1 dòng trước dòng số 7 và xoá đi 2 cột, tại ô O10 = CELL("contents";D10:H10) rồi copy công thức này cho các ô còn lại trong bảng trên cột O.
Bây giờ bạn chỉ việc AutoFilter cột O với giá trị filter = 0. Đó là các dòng trống.
Bạn có thể dễ dàng tạo ra một macro để xoá tự động các dòng này?
Chúc bạn thành công!
Cảm ơn bạn về công thức CELL. Đúng là công thức mình đang cần!!!
 
Upvote 0

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

Back
Top Bottom