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

Bài viết bên dưới sẽ hướng dẫn cho bạn cách để thêm Clip Art vào file một cách nhanh chóng và dễ dàng và tùy chọn này có thể được thay đổi tùy theo từng phiên bản Office mà bạn đang sở hữu. THỰC HIỆN THÊM CLIP ART TRONG OFFICE…Xem chi tiết: Hướng dẫn cách thêm Clip Art vào file chi tiết
Nếu bạn đang muốn biết cách làm thế nào để chuyển một cột thành nhiều cột thì bài viết dưới đây với ví dụ vô cùng cụ thể sẽ giúp bạn tìm ra câu trả lời đấy. Cùn khám phá công thức chuyển 1 cột thành nhiều cột trong Excel nhé!…Xem chi tiết: Công thức chuyển 1 cột thành nhiều cột trong Excel
Trong quá trình làm việc, đặc biệt là các lĩnh vực liên qua đến giao dịch tiền tệ, sẽ không thể thiếu việc chuyển đổi tỷ giá tiền tệ giữa các quốc gia sang đồng Việt Nam và ngược lại. Trong bài viết dưới đây, chúng tôi sẽ hướng dẫn chi…Xem chi tiết: Hướng dẫn chuyển đổi tỷ giá tiền tệ trên Excel
Trong quá trình làm việc trên Excel, sẽ không ít lần bạn có nhu cầu chuyển đổi dữ liệu theo cột thành hàng và ngược lại. Để giúp bạn thực hiện nhanh chóng thao tác này, hãy cùng chúng tôi tìm hiểu cách chuyển hàng thành cột trong Excel ở…Xem chi tiết: Hướng dẫn cách chuyển hàng thành cột trong Excel và ngược lại
Bài viết bên dưới chúng tôi sẽ hướng dẫn chi tiết cho bạn cách chuyển ngày tháng năm sang dạng Text một cách nhanh chóng mà không cần dùng công thức, cùng đón đọc nhé!DÙNG HÀM TEXT ĐỂ CHUYỂN ĐỔI ĐỊNH DẠNG DATE THÀNH TEXTHàm TEXT được thiết kế với công…Xem chi tiết: Hướng dẫn cách chuyển ngày tháng năm sang dạng Text trong Ecxel
Đượ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 *