Hướng dẫn how do i remove a specific cell from a macro in excel? - làm cách nào để xóa một ô cụ thể khỏi macro trong excel?

Bỏ qua nội dung chính

Trình duyệt này không còn được hỗ trợ.

Nâng cấp lên Microsoft Edge để tận dụng các tính năng mới nhất, cập nhật bảo mật và hỗ trợ kỹ thuật.

Xóa các ô bằng cách sử dụng vòng "cho mỗi ... tiếp theo" trong Excel

  • Bài báo
  • 05/05/2022
  • 3 phút để đọc
  • Áp dụng cho: Microsoft Office Excel 2007, Microsoft Office Excel 2003, Microsoft Office Excel 2002, Excel 97

Trong bài viết này

Bản tóm tắt

Microsoft Excel 2002 và các phiên bản Excel Delete sau này trong vòng lặp "cho mỗi ... tiếp theo" theo một cách khác với Microsoft Excel 97 và các phiên bản trước của Excel Do.

Bài viết này mô tả sự khác biệt và nó cung cấp một ví dụ về cơ bản trực quan cho các ứng dụng Macro minh họa cách xóa các ô trong một vòng lặp.

Thêm thông tin

Microsoft chỉ cung cấp các ví dụ lập trình cho minh họa, không có bảo hành được thể hiện hoặc ngụ ý. Điều này bao gồm, nhưng không giới hạn, các bảo đảm ngụ ý về khả năng thương mại hoặc thể lực cho một mục đích cụ thể. Bài viết này giả định rằng bạn đã quen thuộc với ngôn ngữ lập trình đang được thể hiện và với các công cụ được sử dụng để tạo và gỡ lỗi các thủ tục. Các kỹ sư hỗ trợ của Microsoft có thể giúp giải thích chức năng của một thủ tục cụ thể. Tuy nhiên, họ sẽ không sửa đổi các ví dụ này để cung cấp chức năng bổ sung hoặc các quy trình xây dựng để đáp ứng các yêu cầu cụ thể của bạn.

Dữ liệu mẫu

Để sử dụng macro trong bài viết này, hãy nhập dữ liệu mẫu sau vào bảng tính:

A1: a B1: 1
A2: b B2: 2
A3: x B3: 3
A4: x B4: 4
A5: c B5: 5
A6: x B6: 6
A7: d B7: 7
A8: x B8: 8
A9: x B9: 9
A10: e B10: 10

Mẫu vĩ mô mẫu

Trong một mô -đun macro mới, nhập macro sau.

Sub DeleteCells()

     'Loop through cells A1:A10 and delete cells that contain an "x."
     For Each c in Range("A1:A10")
        If c = "x" Then c.EntireRow.Delete
    Next

End Sub

Hành vi của macro mẫu trong Excel 2002 và trong các phiên bản sau của Excel

Khi bạn chạy macro Deletecells trong Excel 2002 và trong các phiên bản sau của Excel, chỉ các hàng 3, 6 và 8 sẽ bị xóa. Mặc dù các hàng 4 và 9 chứa "x" trong cột A, macro không xóa các hàng. Kết quả của macro như sau:

A1: a B1: 1
A2: b B2: 2
A3: x B3: 4
A4: c B4: 5
A5: d B5: 7
A6: x B6: 9
A7: e B7: 10

Khi Microsoft Excel xóa hàng 3, tất cả các ô di chuyển lên một hàng. Ví dụ, ô A3 giả định nội dung của ô A4, ô A4 giả định nội dung của ô A5, v.v. Sau khi mỗi ... Vòng tiếp theo đánh giá một ô, nó đánh giá ô tiếp theo; Do đó, khi các tế bào được dịch chuyển, chúng có thể bị bỏ qua bởi vòng lặp.

Hành vi của macro mẫu trong Microsoft Excel 5.0 và Microsoft Excel 7.0

Khi bạn chạy macro Deletecells trong Excel 5.0 và trong Excel 7.0, macro sẽ xóa tất cả các hàng có chứa "x." Kết quả của macro như sau:

A1: a B1: 1
A2: b B2: 2
A3: c B3: 5
A4: d B4: 7
A5: e B5: 10

Khi hàng 3 bị xóa, tất cả các ô di chuyển lên một hàng. Sau đó, ô A3 giả định nội dung của ô A4, ô A4 giả định nội dung của ô A5, v.v.

Tuy nhiên, không giống như hành vi của vòng lặp trong Excel 2002 và trong các phiên bản Excel sau này, khi vòng lặp "cho mỗi ... tiếp theo" đánh giá một ô trong Excel 5.0 và trong Excel 7.0, vòng lặp đánh giá lại tế bào nếu nó bị xóa vòng lặp. Do đó, các tế bào không bị bỏ qua.

Phương pháp được đề xuất để sử dụng một vòng lặp để xóa các ô

Sử dụng macro sau khi bạn muốn sử dụng vòng lặp để xóa các ô:

Sub DeleteCells2()

     Dim rng As Range
     Dim i As Integer, counter As Integer
    
     'Set the range to evaluate to rng.
     Set rng = Range("A1:A10")
    
     'initialize i to 1
     i = 1
    
     'Loop for a count of 1 to the number of rows
     'in the range that you want to evaluate.
     For counter = 1 To rng.Rows.Count
    
          'If cell i in the range contains an "x",
           'delete the row.
           'Else increment i
            If rng.Cells(i) = "x" Then
                rng.Cells(i).EntireRow.Delete
            Else
                i = i + 1
            End If
    
     Next

End Sub

Kết quả của macro này trong tất cả các phiên bản của Excel như sau:

A1: a B1: 1
A2: b B2: 2
A3: c B3: 5
A4: d B4: 7
A5: e B5: 10

Phương pháp bổ sung để sử dụng một vòng lặp để xóa các ô

Đây là một phương pháp thay thế cho phương pháp được hiển thị ở trên. Phương pháp này tạo ra kết quả tương tự.

 Sub DeleteCells3()

     Dim rng As Range, i As Integer

     'Set the range to evaluate to rng.
     Set rng = Range("A1:A10")

     'Loop backwards through the rows
     'in the range that you want to evaluate.
     For i = rng.Rows.Count To 1 Step -1
    
             'If cell i in the range contains an "x", delete the entire row.
             If rng.Cells(i).Value = "x" Then rng.Cells(i).EntireRow.Delete
     Next

End Sub

Làm cách nào để xóa một ô trong một macro?

Mã: Phạm vi (Hồi A1: C3,). Xóa nó sẽ xóa các giá trị ô được đề cập, giống như phương thức rõ ràng của chúng tôi.Bạn có thể sử dụng thuộc tính ô VBA.Trong các khái niệm VBA, các tế bào cũng giống nhau, không khác với các tế bào Excel bình thường.Đọc thêm với tên bảng tính nếu bạn muốn xóa tất cả dữ liệu của ô.Range (“A1:C3”).Delete It will delete the mentioned cell values, just like our clear method. You can use the VBA CELLS property. In VBA concepts, cells are also the same, no different from normal excel cells. read more with a worksheet name if you want to delete all the cell's data.

Làm cách nào để loại bỏ giá trị khỏi macro trong Excel?

Trong VBA, có một phương pháp gọi là ClearContents mà bạn có thể sử dụng để xóa các giá trị và công thức từ một ô, phạm vi của ô và toàn bộ bảng tính.Để sử dụng phương pháp này, trước tiên, bạn cần xác định biểu thức ở đâu đó bạn muốn xóa nội dung và sau đó nhập.define the expression somewhere you want to clear the content, and then type “. ClearContents”.

Làm cách nào để loại bỏ một phần của ô trong Excel VBA?

Làm thế nào để loại bỏ ký tự cụ thể trong Excel..
Chọn một loạt các ô mà bạn muốn xóa một ký tự cụ thể ..
Nhấn Ctrl + H để mở hộp thoại Tìm và thay thế ..
Trong tìm hộp nào, nhập nhân vật ..
Để lại hộp thay thế ..
Nhấp vào Thay thế tất cả ..