Top 13 # Xóa Vba Trong Excel / 2023 Xem Nhiều Nhất, Mới Nhất 12/2022 # Top Trend | Trucbachconcert.com

Cách Xóa Các Hàng Trống Trong Excel Với Vba / 2023

Có nhiều cách để xóa các hàng trống trong trang tính Excel, nhưng cách nhanh chóng nhất là sử dụng macro trong Excel. Bất kể lý do xuất hiện các hàng trống trong Excel là gì, tốt nhất là bạn nên xóa chúng. Hầu hết các tính năng của Excel diễn giải một hàng trống là phần cuối của một dải dữ liệu; do đó, các tính năng đó sẽ không hoạt động như mong đợi nếu bạn để các hàng trống trong tập dữ liệu của mình.

Trong bài viết này, chúng ta sẽ khám phá cách tạo một macro giúp bạn nhanh chóng xóa các hàng trống trong Excel.

Mã VBA xóa hàng trống trong Excel

Đầu tiên, chúng ta hãy xem mã hiển thị bên dưới. Đừng quá lo lắng vì đoạn code này không phức tạp như vẻ bề ngoài. Logic rất đơn giản. Sau khi khai báo và thiết lập một vài biến, vòng lặp For sẽ kiểm tra mọi hàng trong phạm vi đã chọn để tìm các hàng trống. Khi nó tìm thấy bất kỳ hàng trống nào, code này sẽ xóa hàng và dịch chuyển các hàng phía dưới lên.

Mã VBA xóa hàng trống trong Excel

Sub DeleteBlankRows()'Delete blank rows in a selected range.'Choose appropriate delete statement in For loop.'Entire Row deletes entire rows.'Delete deletes partial rows.Dim rng As RangeDim selectedRng As RangeDim iRowCount As IntegerDim iForCount As Integer'Error handling; for good measure.On Error Resume NextSet selectedRng = Application.Selection'Type:=8 argument specifies a Range object; input value must be a range.Set selectedRng = Application.InputBox("Range", , selectedRng.Address, Type:=8)Application.ScreenUpdating = False'Count of rows in selected range used as For stop value.'WorksheetFunction.CountA counts the number of cells that are NOT empty.iRowCount = selectedRng.Rows.CountFor iForCount = iRowCount To 1 Step -1 If Application.WorksheetFunction.CountA(selectedRng.Rows(iForCount)) = 0 Then 'Delete entire row. selectedRng.Rows(iForCount).EntireRow.Delete 'Delete partial row. 'selectedRnd.Rows(iForCount).Delete End IfNext Application.ScreenUpdating = TrueEnd Sub

Một số lệnh có thể cần giải thích một chút.

Đầu tiên là hàm InputBox:

Set selectedRng = Application.InputBox("Range", , selectedRng.Address, Type:=8)

Có thể bạn đã quen thuộc với hàm InputBox như một công cụ để thu thập dữ liệu từ người dùng. Trong trường hợp này, người dùng phải chỉ định một phạm vi vì đối số, Type: = 8, chỉ định rằng đầu vào là một đối tượng Range.

Câu lệnh iRowCount = selectRng.Rows.Count trả về số hàng trong phạm vi đầu vào (từ hộp nhập).

Vòng lặp For sử dụng biến này (trừ 1) làm giá trị dừng của nó. Câu lệnh đầu tiên trong vòng lặp For là câu lệnh If.

Hàm CountA đếm số ô trong hàng hiện tại không trống. Khi số ô không trống là 0, câu lệnh tiếp theo sẽ xóa toàn bộ hàng.

Đoạn code để xóa dòng trống trong excel này bao gồm hai câu lệnh xóa: một câu lệnh xóa toàn bộ hàng và một câu lệnh xóa một phần các hàng trong phạm vi đã chọn.

Hoặc để đơn giản hơn, bạn có thể tạo hai macro: một macro xóa toàn bộ hàng và một macro chỉ xóa một phần hàng.

Bây giờ bạn đã biết cách hoạt động của macro, hãy thêm nó vào sổ làm việc của mình.

Đầu tiên, mở VBA bằng cách nhấn Alt + F11.

Trong Project Explorer, truy cập module ThisWorkbook và nhập đoạn code bên trên vào.

Tiếp theo, quay lại Excel và lưu nó dưới dạng tệp hỗ trợ macro như sau:

Bấm vào tab File.

Chọn Save as từ ngăn bên trái.

Từ menu thả xuống File Type (bên dưới điều khiển Name), chọn Sổ làm việc Hỗ trợ Macro của Excel (* .xlsm).

Nhấp vào để Save.

Như vậy, bạn đã thêm macro thành công vào trang tính của mình.

Sử dụng macro để xóa các hàng trống trong Excel

Nhấp vào tab Developer.

Trong nhóm Code, bấm Macro.

Trong hộp thoại kết quả, chọn ThisWorkbook.DeleteBlankRows và nhấp vào Run.

Bạn sẽ thấy các hộp nhắc hiển thị như hình bên dưới. Nếu bạn chọn phạm vi trước khi chạy macro, hộp nhập sẽ mặc định thành phạm vi đã chọn. Tuy nhiên, bạn có thể đánh dấu phạm vi hoặc nhập phạm vi theo cách thủ công cũng như sử dụng hộp nhập liệu. Bạn cũng có thể nhập tên dải ô hoặc tên đối tượng Table.

Nhấp vào OK và bạn đã hoàn tất. Các hàng trống đã biến mất.

Đầu tiên, bạn không thể hoàn tác việc xóa. Lời khuyên tốt nhất của tôi là luôn lưu bất kỳ sổ làm việc nào trước khi xóa dữ liệu. Bằng cách đó, nếu bạn mắc lỗi, bạn vẫn ổn.

Thứ hai, nếu bạn đang làm việc với một tập dữ liệu lớn, việc chọn phạm vi có thể khó khăn. May mắn thay, macro có thể xử lý tên phạm vi hoặc tên đối tượng Bảng.

Bạn có thể nhận thấy rằng còn một số ô trống trong bản ghi. Macro sẽ không xóa các bản các ô trống này, đoạn mã trên chỉ xóa các hàng trong phạm vi được chọn.

Nếu bạn thường xuyên sử dụng macro, hãy cân nhắc thêm nó vào QAT của bạn

Cách thêm macro vào thanh công cụ QAT

Bạn có thể dễ dàng để thêm một hoặc hai macro vào Office QAT để nhanh chóng thực hiện các tác vụ thường xuyên lập lại. Các bước thực hiện như sau:

Nhấp vào menu thả xuống QAT và chọn More Commands.

Từ menu thả xuống Commands From, chọn Macro.

Ứng dụng của bạn sẽ hiển thị các macro đang có trong danh sách kết quả. Chọn macro bạn muốn thêm vào QAT và nhấp vào nút Add

Nhấn OK để thêm macro vào QAT.

Sau đó, bạn có thể tùy chỉnh macro trên thanh Office QAT của mình để hiển thị đẹp mắt hơn. Bạn có thể thay đổi biểu tượng macro với các bước như sau:

Lặp lại các bước 1 và 2 ở trên để truy cập các tùy chọn giao diện QAT.

Chọn macro trong danh sách Customize Quick Access Toolbar.

Nhấp vào Edit.

Trong hộp thoại hiện ra, chọn một biểu tượng mới. Bạn cũng có thể thay đổi tên.

Nhấn OK hai lần để xem biểu tượng mới trong QAT.

Hướng Dẫn Cách Xóa File Trong Folder Bằng Vba Excel / 2023

Trong bài viết này chúng ta cùng tìm hiểu cách ứng dụng VBA trong việc xóa các nội dung trong một thư mục trên máy tính. Việc này rất hữu dụng khi chúng ta thường xuyên phải tương tác trên đối tượng thư mục trong VBA, thay vì xóa bằng tay từng mục thì chúng ta có thể sử dụng VBA để tự động xóa tất cả các nội dung trong thư mục đó. Đặc biệt hữu ích khi làm việc với những công việc có sử dụng lệnh trích xuất nội dung ra nhiều file nằm trong cùng 1 thư mục.

Tham khảo bài viết: Lệnh trích xuất dữ liệu hàng loạt ra file PDF theo mỗi đối tượng

1. Nguyên tắc thực hiện

Chúng ta cần làm việc theo 2 đối tượng chính:

Thư mục: Xác định đúng đường dẫn tới thư mục đó

Các file trong thư mục: Mỗi file đều có 1 điểm chung là có dấu chấm (thể hiện đuôi file đó là dạng file nào).

Chú ý:

Cần kiểm tra xem trong thư mục có file nào không, vì nếu không chứa file thì không cần thực hiện thao tác xóa.

Sau khi hoàn thành lệnh xóa các thư mục cần có thông báo đã hoàn thành, để nhắc cho chúng ta biết câu lệnh đã được thực hiện

2. Câu lệnh VBA

View the code on Gist.

Trong câu lệnh trên, chúng ta có thể thiết lập việc tùy chọn đường dẫn tới thư mục cần xóa nếu chưa rõ đường dẫn chính xác, như vậy có thể làm chậm thủ tục nhưng sẽ tăng tính chính xác.

Lưu ý:

Việc xóa file trong Folder bằng câu lệnh trên cần lưu ý: Xóa tất cả các file, không phân biệt loại file là gì.

Muốn xác định rõ loại file cần xóa, cần tùy biến lại nội dung *.* thành *.đuôi file

Với sứ mệnh: ” Mang cơ hội phát triển kỹ năng, phát triển nghề nghiệp tới hàng triệu người “, đội ngũ phát triển đã và đang làm việc với những học viện, trung tâm đào tạo, các chuyên gia đầu ngành để nghiên cứu và xây dựng lên các chương trình đào tạo từ cơ bản đến chuyên sâu xung quanh các lĩnh vực: Tin học văn phòng, Phân tích dữ liệu, Thiết kế, Công nghệ thông tin, Kinh doanh, Marketing, Quản lý dự án…

Gitiho tự hào khi được đồng hành cùng:

50+ khách hàng doanh nghiệp lớn trong nhiều lĩnh vực như: Vietinbank, Vietcombank, BIDV, VP Bank, TH True Milk, VNPT, FPT Software, Samsung SDIV, Ajinomoto Việt Nam, Messer,…

Hướng Dẫn Xóa Nhiều Dòng Nhanh Trong Bảng Tính Excel Với Vba / 2023

Trong quá trình “vật lộn” với các bảng tính Excel của mình, có thể bạn đã gặp phải trường hợp cần xóa rất nhiều dòng trong Excel nếu dòng đó thỏa mãn 1 điều kiện nhất định.

Ví dụ:

Xóa những dòng mà cột C có đánh dấu “x”

Xóa những dòng mà Cột B có giá trị nhỏ hơn 0.1

Có thể, bạn có biết 1 chút VBA, và nghĩ ra một kế hoạch tuyệt vời là sẽ sử dụng vòng lặp trong VBA để giải quyết vấn đề xóa dòng này 1 cách nhanh chóng và tự động. Không cần nhiều cố gắng, bạn tự viết được 1 đoạn code tương tự như sau

View the code on Gist.

Sau khi bấm nút cho code chạy, bạn thư thái rủ đồng nghiệp nghỉ 10 phút làm cốc Cafe.

10 phút sau, bạn quay về bàn làm việc với phong thái tự tin là công việc của mình đã được tự động hoàn thành. Tới nơi, đoạn code bạn chạy vẫn đang làm cho Excel quay đều quay đều. Và đó là lý do bạn đang đọc bài viết này.

Chuẩn bị dữ liệu để test việc xóa nhiều dòng

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

Với đoạn code VBA như trên, thì việc xóa dòng theo điều kiện này mất khoảng hơn 10 phút. Ở trong hình sau, D1 là thời gian bắt đầu, 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 ở đây là, chúng ta sẽ sử dụng 1 công thức trong cột phụ để “nhận biết” dòng nào cần được xóa, sau đó xóa với đoạn code VBA sau đây

View the code on Gist.

Kết quả: nhanh hơn 1 chút

Cách 2:

Sử dụng hàm Filter trong bộ hàm mảng động mới của Microsoft. Với cách này, thì kết quả filter gần như có ngay lập tức (kết quả lọc ở cột B)

Cách 3:

Sử dụng chức năng Filter để lọc kết quả hoặc copy qua sheet khác:

View the code on Gist.

Cách 4:

Xóa trực tiếp sử dụng Autofilter trong VBA hoặc xóa bằng tay

Với sứ mệnh: ” Mang cơ hội phát triển kỹ năng, phát triển nghề nghiệp tới hàng triệu người “, đội ngũ phát triển đã và đang làm việc với những học viện, trung tâm đào tạo, các chuyên gia đầu ngành để nghiên cứu và xây dựng lên các chương trình đào tạo từ cơ bản đến chuyên sâu xung quanh các lĩnh vực: Tin học văn phòng, Phân tích dữ liệu, Thiết kế, Công nghệ thông tin, Kinh doanh, Marketing, Quản lý dự án…

Gitiho tự hào khi được đồng hành cùng:

50+ khách hàng doanh nghiệp lớn trong nhiều lĩnh vực như: Vietinbank, Vietcombank, BIDV, VP Bank, TH True Milk, VNPT, FPT Software, Samsung SDIV, Ajinomoto Việt Nam, Messer,…

Excel Vba: Xóa Dòng Excel Dựa Trên Điều Kiện Đã Xác Định / 2023

Đánh giá:

0

/

5

Voted:

0

Number:

0

Your page rank:

Xóa dòng dựa trên điều kiện

Option Explicit Sub DelRows1() Dim rRange As Range Dim strCriteria As String Dim lCol As Long Dim rHeaderCol As Range Dim xlCalc As XlCalculation Const strTitle As String = "LeQuocThai.Com - Dieu kien xoa hang" On Error Resume Next Step1: 'We use Application.InputBox type 8 so user can select range Set rRange = Application.InputBox(Prompt:="Chon vung dieu kien bao gom Tieu de" _ , Title:=strTitle & " STEP 1 of 3", Default:=ActiveCell.CurrentRegion.Address, Type:=8) 'Cancelled or non valid rage If rRange Is Nothing Then Exit Sub 'Awlays use GoTo when selecting range so doesn't matter which Worksheet chúng tôi rRange.Rows(1), True Step2 'We use Application.InputBox type 1 so return a number lCol = Application.InputBox(Prompt:="Vui long dien so Dong va Cot" _ , Title:=strTitle & " STEP 2 of 3", Default:=1, Type:=1) 'Cancelled If lCol = 0 Then Exit Sub Step3: 'We use default InputBox type as we want Text strCriteria = InputBox(Prompt:="Vui long dien 1 dieu kien." & _ , Title:=strTitle & " STEP 3 of 3") If strCriteria = vbNullString Then Exit Sub 'Store current Calculation then switch to manual. 'Turn off events and screen updating With Application xlCalc = .Calculation .Calculation = xlCalculationManual .EnableEvents = False .ScreenUpdating = False End With 'Remove any filters ActiveSheet.AutoFilterMode = False With rRange 'Filter, offset(to exclude headers) and delete visible rows .AutoFilter Field:=lCol, Criteria1:=strCriteria .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete End With 'Remove any filters ActiveSheet.AutoFilterMode = False 'Revert back With Application .Calculation = xlCalc .EnableEvents = True .ScreenUpdating = True End With On Error GoTo 0 End Sub Sub DelRows2() Dim rTable As Range Dim rCol As Range, rCell As Range Dim lCol As Long Dim xlCalc As XlCalculation Dim vCriteria On Error Resume Next 'Determine the table range With Selection Set rTable = Selection Else Set rTable = .CurrentRegion On Error GoTo 0 End If End With 'Determine if table range is valid If rTable Is Nothing Or rTable.Cells.Count = 1 Or WorksheetFunction.CountA(rTable) < 2 Then MsgBox "Khong the xac dinh vung du lieu.", vbCritical, "LeQuocThai.Com" Exit Sub End If 'Get the criteria in the form of text or number. vCriteria = Application.InputBox(Prompt:="Nhap dieu kien de xoa Dong. " _ & "Neu dieu kien nam o mot O, clik chon o dieu kien do", _ Title:="LeQuocThai.Com - Dieu kien xoa Dong", Type:=1 + 2) 'Go no further if they Cancel. If vCriteria = "False" Then Exit Sub 'Get the relative column number where the criteria should be found lCol = Application.InputBox(Prompt:="Chon so luong Cot co lien quan " _ & "co chua dieu kien xoa.", Title:="LeQuocThai.Com - Dieu kien xoa Dong va Cot", Type:=1) 'Cancelled If lCol = 0 Then Exit Sub 'Set rCol to the column where criteria should be found Set rCol = rTable.Columns(lCol) 'Set rCell to the first data cell in rCol Set rCell = rCol.Cells(2, 1) 'Store current Calculation then switch to manual. 'Turn off events and screen updating With Application xlCalc = .Calculation .Calculation = xlCalculationManual .EnableEvents = False .ScreenUpdating = False End With 'Loop and delete as many times as vCriteria exists in rCol For lCol = 1 To WorksheetFunction.CountIf(rCol, vCriteria) Set rCell = rCol.Find(What:=vCriteria, After:=rCell, LookIn:=xlValues, _ LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False).Offset(-1, 0) rCell.Offset(1, 0).EntireRow.Delete Next lCol ` With Application .Calculation = xlCalc .EnableEvents = True .ScreenUpdating = True End With On Error GoTo 0 End Sub