Xóa ô chứa các điều khoản cụ thể (Microsoft Excel)
Nếu bạn cần làm loại việc này thường xuyên, thì giải pháp tốt nhất là sử dụng macro. Bí quyết là cách bạn chỉ định, trong macro, chính xác những gì bạn muốn thay thế. Một cách là nhồi thông tin vào một mảng, như trong ví dụ sau:
Sub RemoveTerms1() Dim vTerm As Variant Dim vArray As Variant For Each vTerm in vArray Selection.Replace What:=vTerm, _ Replacement:="", LookAt:=xlPart Next vTerm End Sub
Các thuật ngữ đang được tìm kiếm được đặt trong mảng vArray, và sau đó từng thành viên của mảng (từng thuật ngữ) được bước qua. Phương thức Replace được sử dụng với đối tượng Selection để thực hiện các thay thế thực tế. Macro không loại bỏ các ô; nó chỉ đơn giản là loại bỏ bất kỳ văn bản nào phù hợp với thuật ngữ. Khi thay thế, tìm kiếm không phân biệt chữ hoa chữ thường để “google” khớp với “Google”.
Vì đối tượng Lựa chọn được sử dụng, điều quan trọng là đảm bảo bạn chọn danh sách bạn muốn xử lý trước khi thực sự chạy macro.
Nếu bạn không, thì không có gì được thay thế.
Nếu muốn, bạn có thể tạo macro kéo các điều khoản từ một loạt các ô trong sổ làm việc.
Sub RemoveTerms2() Dim c As Range Dim rngSource As Range Dim vTerm As Variant Dim arrTerms As Variant Dim i As Integer i = -1 arrTerms = Array() For Each c In Range("D1:D9").Cells If Trim(c.Value) > "" Then i = i + 1 ReDim Preserve arrTerms(i) arrTerms(i) = Trim(c.Value) End If Next c On Error Resume Next Set rngSource = Application.InputBox( _ Prompt:="Please select Range", _ Title:="Removing Cells Containing Terms", _ Default:=ActiveSheet.UsedRange.Address, Type:=8) On Error GoTo 0 If rngSource Is Nothing Then MsgBox ("You didn't specify a range to process") Else For Each vTerm in arrTerms rngSource.Replace What:=vTerm, _ Replacement:="", LookAt:=xlWhole Next vTerm End If End Sub
Macro này kéo các cụm từ tìm kiếm từ phạm vi D1: D9 và sau đó nhắc bạn chọn phạm vi ô bạn muốn xử lý. Nó sử dụng cùng một phương thức Replace đã được sử dụng trong macro trước đó, ngoại trừ nó chỉ định tham số LookAt là xlWhole. Điều này có nghĩa là cụm từ tìm kiếm cần phải khớp với toàn bộ ô để được xóa. Tuy nhiên, các điều khoản vẫn được coi là không phân biệt chữ hoa chữ thường.
Lưu ý rằng các ví dụ cho đến nay không thực sự xóa bất kỳ ô nào; họ chỉ cần xóa nội dung của các ô. Trong nhiều trường hợp, đây chính xác là những gì bạn muốn vì bạn không muốn phá vỡ bố cục của trang tính thực tế. Nếu bạn thực sự muốn xóa các ô, thì bạn sẽ không sử dụng phương pháp Thay thế. Thay vào đó, bạn có thể bật so sánh văn bản mở rộng và sử dụng toán tử Thích để xem có khớp hay không.
Option Compare Text Sub RemoveTerms3() Dim c As Range Dim rngSource As Range Dim vTerm As Variant Dim arrTerms As Variant Dim i As Integer Dim sLook As String i = -1 arrTerms = Array() For Each c In Range("D1:D9").Cells If Trim(c.Value) > "" Then i = i + 1 ReDim Preserve arrTerms(i) arrTerms(i) = Trim(c.Value) End If Next c On Error Resume Next Set rngSource = Application.InputBox( _ Prompt:="Please select Range", _ Title:="Removing Cells Containing Terms", _ Default:=ActiveSheet.UsedRange.Address, Type:=8) On Error GoTo 0 If rngSource Is Nothing Then MsgBox ("You didn't specify a range to process") Else For Each vTerm in arrTerms sLook = "" & vTerm & "" For Each c In rngSource If c.Value Like sLook Then c.Delete Next Next vTerm End If End Sub
Lưu ý rằng các cụm từ tìm kiếm vẫn được lấy từ phạm vi D1: D9 và bạn vẫn được hỏi về phạm vi bạn muốn xử lý. Tuy nhiên, từ đó, quá trình sẽ khác: Macro kiểm tra từng ô và nếu có một phần khớp, thì ô đó sẽ bị xóa.
Để biến thể này trên macro hoạt động bình thường, bạn sẽ cần bao gồm dòng Văn bản So sánh Tùy chọn bên ngoài chính quy trình.
Điều này hướng dẫn VBA bật các từ khóa (chẳng hạn như Thích) cho phép so sánh văn bản.
_Lưu ý: _
Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.
ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.
Mẹo này (13373) áp dụng cho Microsoft Excel 2007, 2010, 2013, 2016, 2019 và Excel trong Office 365.