Hướng dẫn cách xóa nhiều dòng trong Excel

Trong quá trình làm việc với Excel, sẽ không ít lần bạn gặp trường hợp muốn xóa rất nhiều dòng mà trong đó thỏa mãn chung 1 điều kiện nhất định. Để giúp bạn có thể thực hiện được nhanh chóng thì bài viết dưới đây sẽ hướng dẫn cho bạn chi tiết cách xóa nhiều dòng trong Excel. Cùng theo dõi ngay nhé!

Bạn có thể biết chút ít về VBA và đang nghĩ ra một kế hoạch sẽ dùng vòng lặp trong VBA để giúp giải quyết việc xóa nhiều dòng tự động và nhanh chóng. Bạn có thể tự viết được 1 đoạn code như sau:

Sub DeleteUsingForLoop()
Dim rowIndex As Long
Application.ScreenUpdating = False
With Sheet1
.Range(“D1”) = Now
For rowIndex = 40000 To 1 Step 1
If .Range(“A” & rowIndex).Value < 0.1 Then
.Range(“A” & rowIndex).EntireRow.Delete
End If
Next
.Range(“E1”) = Now
End With
Application.ScreenUpdating = True
MsgBox “Done”
End Sub
Sau khi đã thực hiện bấm nút cho code chạy, việc bạn chỉ làm lúc này là thư thái chờ đợi trong vòng 10 phút để có kết quả. Tuy nhiên, khi 10 phút đã kết thúc, bạn vẫn chưa nhận được kết quả ưng ý bởi những lí do sau đây:

CHUẨN BỊ DỮ LIỆU ĐỂ TEST VIỆC XÓA NHIỀU DÒNG

Dữ liệu dùng để test việc xóa dòng của bạn sẽ nằm trong cột A của Sheet1 vùng A1:A40000, được biết đến là các giá trị trong khoảng 0 tới 1 được tạo ra bởi hàm mảng động mới trong Excel RandArray Tại đây, bạn sẽ đi xóa các dòng mà cột A có giá trị nhỏ hơn 0,1. Và sẽ có khoảng 4000 dòng như vậy

Với đoạn code VBA bên trên, thì việc thực hiện xóa dòng theo điều kiện này sẽ mất tầm hơn 10 phút. Trong hình sau, D1 sẽ là thời gian bắt đầu, còn D2 là thời gian đoạn code kết thúc chạy.

CÁCH XÓA NHIỀU DÒNG THEO ĐIỀU KIỆN NHANH HƠN

Cách 1:

Ý tưởng thực hiện ở đây là, bạn sẽ dùng 1 công thức tại cột phụ để “nhận biết” được dòng nào cần xóa, sau đó xóa với đoạn code VBA bên dưới:

Sub DeleteUsingSpecialCells()
Application.ScreenUpdating = False
With Sheet1.Range(“B1:B40000”)
.Range(“E1”) = Now
.Formula = “=IF(A1<0.1,0/0,A1)”
.Cells.SpecialCells(xlCellTypeFormulas, xlErrors).EntireRow.Delete
.Range(“E2”) = Now
End With
Application.ScreenUpdating = True
MsgBox “Done”
End Sub
Kết quả: nhanh hơn 1 chút

 

Cách 2:

Dùng hàm Filter trong bộ hàm mảng động mới của Microsoft. Bằng cách này, filter gần như sẽ có kết quả ngay lập tức (kết quả lọc ở cột B)

Cách 3:

Dùng chức năng Filter để lọc kết quả hay copy qua sheet khác:

Sub DeleteRowsWithValuesNewSheet() ‘100K records 10K to delete
‘Test 1: 2.40234375 sec
‘Test 2: 2.41796875 sec
‘Test 3: 2.40234375 sec
‘1M records 100K to delete
‘Test 1: 32.9140625 sec
‘Test 2: 33.1484375 sec
‘Test 3: 32.90625 sec
Dim oldWs As Worksheet, newWs As Worksheet, rowHeights() As Long
Dim wsName As String, t As Double, oldUsedRng As Range
FastWB True: t = Timer
Set oldWs = Worksheets(1)
wsName = oldWs.Name
Set oldUsedRng = oldWs.Range(“A1”, GetMaxCell(oldWs.UsedRange))
If oldUsedRng.Rows.Count > 1 Then ‘If sheet is not empty
Set newWs = Sheets.Add(After:=oldWs) ‘Add new sheet
With oldUsedRng
.AutoFilter Field:=1, Criteria1:=“<>Test String”
.Copy ‘Copy visible data
End With
With newWs.Cells
.PasteSpecial xlPasteColumnWidths
.PasteSpecial xlPasteAll ‘Paste data on new sheet
.Cells(1, 1).Select ‘Deselect paste area
.Cells(1, 1).Copy ‘Clear Clipboard
End With
oldWs.Delete ‘Delete old sheet
newWs.Name = wsName
End If
FastWB False: InputBox “Duration: “, “Duration”, Timer t
End Sub
Cách 4:

Thực hiện xóa trực tiếp sử dụng Autofilter trong VBA hoặc là xóa bằng tay 🙂

Sub DeleteIf()
Dim LR As Long
Application.ScreenUpdating = False
With Sheet1
.Range(“C1”).Value = Now
If .AutoFilterMode Then .AutoFilterMode = False
LR = .Range(“B” & .Rows.Count).End(xlUp).Row
With .Range(“B1”).Resize(LR)
.AutoFilter
.AutoFilter Field:=1, Criteria1:=“>0.5”
.Offset(1).Resize(LR 1).SpecialCells(xlCellTypeVisible).EntireRow.Delete Shift:=xlUp
End With
.AutoFilterMode = False
.Range(“C2”).Value = Now
End With
Application.ScreenUpdating = True
End Sub

Ta biết đến Excel với trang tính có chứa rất nhiều công thức, hàm khác nhau thì ít ai biết rằng trong Word cũng có thể thao tác các hàm cụ thể để người dùng sử dụng. Vậy Word cung cấp những hàm nào và có thông dụng như Excel?…Xem chi tiết: Hướng dẫn cách tạo văn bản ngẫu nhiên trong Word
Bạn đang muốn lưu tài liệu word của mình dưới dạng trang web nhưng chưa biết làm cách nào? Vậy thì bài viết dưới đây sẽ giúp bạn trả lời chi tiết nhất! CÁCH LƯU TÀI LIỆU DƯỚI DẠNG TRANG WEB Lựa chọn tốt nhất để lưu tài liệu dưới…Xem chi tiết: Hướng dẫn cách lưu tài liệu dưới dạng trang web
Trong lúc soạn thảo văn bản trên Word, bạn luôn muốn biết đoạn văn bản của mình đã được bao nhiêu từ. Thao tác thực hiện rất đơn giản, chỉ cần mở bảng thống kê là kiểm tra được. Hãy cùng tìm hiểu chi tiết cách thực hiện trong bài…Xem chi tiết: Hướng dẫn mở bảng thống kê chữ trong Word
Trong quá trình thao tác với Word, bạn sẽ không thể không dùng đến dấu đóng mở ngoặc đơn để mô tả chi tiết thêm cho một vấn đề nào đó hay là một câu ghi chú,.... Tuy nhiên, nếu trong trường hợp bạn muốn xóa bỏ tất cả các…Xem chi tiết: Hướng dẫn xóa bỏ phần văn bản nằm trong dấu ngoặc đơn
Template Microsoft được biết đến là những bộ template hỗ trợ rất nhiều cho bạn trong công việc, rút ngắn thời gian hoàn thành. Trong bài viết dưới đây, hãy cùng chúng tôi khám phá các sử dụng của Template Microsoft nhé! TEMPLATE MICROSOFT Đối với sinh viên mới ra…Xem chi tiết: Hướng dẫn sử dụng Template Microsoft trong công việc
Được đăng trong Kiến thức.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *