Macro excel xóa nội dung ô nếu không

Robert muốn một macro tìm thấy tất cả các phiên bản của các ô trong bảng dữ liệu có giá trị bằng 0 và sau đó xóa các ô đó. Anh ấy tự hỏi làm thế nào để làm điều này

Với mục đích của thủ thuật này, tôi sẽ giả định rằng Robert thực sự muốn xóa các giá trị trong các ô chứ không thực sự xóa các ô. Hơn nữa, tôi sẽ cho rằng anh ấy không muốn chỉ ẩn các giá trị 0, vì có thể dễ dàng thực hiện với một thay đổi cài đặt đơn giản trong Excel. [Cách bạn thực hiện việc này đã được trình bày trong các Thủ thuật Excel khác. ]

Thực tế, có một số cách bạn có thể thực hiện để loại bỏ các giá trị 0 của mình. Một cách thậm chí không sử dụng macro mà thay vào đó dựa vào khả năng Tìm và Thay thế của Excel

  1. Nhấn Ctrl + H. Excel hiển thị tab Thay thế của hộp thoại Tìm và Thay thế
  2. Nhấp vào nút Tùy chọn để mở rộng hộp thoại. [Xem Hình 1. ]
  3. Hình 1. Tab Thay thế mở rộng của hộp thoại Tìm và Thay thế

  4. Trong hộp Find What, nhập 0
  5. Đảm bảo hộp Thay thế bằng trống
  6. Chọn hộp kiểm Khớp toàn bộ nội dung ô
  7. Nhấn Replace All để thực hiện thay thế

Bạn thậm chí có thể, nếu muốn, dịch các bước trên thành một macro nhỏ ngắn

Sub ReplaceZeros[]
    Cells.Replace What:="0", Replacement:="", _
      LookAt:=xlWhole, SearchOrder:=xlByRows
End Sub

Có một giới hạn đối với những gì phương pháp này sẽ thực hiện, đáng chú ý nhất là nó sẽ chỉ thay thế các ô thực sự chứa giá trị 0. Nó sẽ không thay thế các công thức phân giải thành 0. Chẳng hạn, nếu một ô chứa công thức =4-4, công thức này sẽ phân giải thành 0, thì thao tác Tìm và Thay thế sẽ bỏ qua nó vì thực tế không có giá trị 0 trong ô

Nếu bạn muốn thứ gì đó thực sự sẽ xóa các ô chứa 0 hoặc phân giải thành 0, thì bạn sẽ cần một cách tiếp cận macro khác. Đây là một cái tốt

Sub DeleteZeroes[]
    Dim rCell As Range

    For Each rCell In Selection
        If rCell.Value = 0 Then
            rCell.ClearContents
        End If
    Next
End Sub

Để sử dụng macro, chỉ cần chọn các ô bạn muốn tác động và sau đó chạy macro. Nó xem qua từng ô được chọn và loại bỏ nội dung của bất kỳ ô nào chứa giá trị 0—và trong trường hợp này, nó cũng bao gồm mọi công thức giải quyết thành 0

Nếu bạn muốn xóa nhiều phạm vi khỏi một trang tính bằng một câu lệnh xóa duy nhất, bạn có thể sử dụng phương pháp bên dưới

Sheets["SheetA"].Range["A3:B10", "C2:D10"].Clear

Nếu tôi đúng, bạn muốn đặt các câu lệnh kéo trong một câu lệnh duy nhất.
Dưới đây là mã để xóa hai phạm vi.

Sheets["SheetA"].Range["A3:B10"].Clear
Sheets["SheetB"].Range["C2:D10"].Clear

Bạn có thể dùng ". ” để nối các câu lệnh VBA

Sheets["SheetA"].Range["A3:B10"].Clear: Sheets["SheetB"].Range["C2:D10"].Clear

Hy vọng điều này sẽ hữu ích.
Cảm ơn-PNRao

  • James Tháng Tám 7, 2015 tại 7. 43 giờ chiều

    Tôi có một danh sách trong đó một số giá trị ô bắt đầu bằng một chữ cái và một số bắt đầu bằng số. Làm cách nào tôi có thể sử dụng hàm xóa để xóa các ô bắt đầu bằng một chữ cái nhưng để lại những ô bắt đầu bằng một số? . ngoài ra một số là chữ hoa và một số là chữ thường [không chắc điều này có quan trọng không]
    cảm ơn

    Giacôbê

  • PNRao Tháng Tám 7, 2015 lúc 7. 57 giờ chiều

    Chào James,

    Macro bên dưới kiểm tra ký tự đầu tiên của mỗi ô trong một phạm vi nhất định và xóa nếu nó không phải là số

    Sub sbClearCellsIFCritera[]
    
    Set Rng = Range["F1:F20"] ' change this range as per your requirement
    For Each cell In Rng.Cells
        If IsNumeric[Left[cell, 1]] = False Then
            cell.Clear
        End If
    Next
    
    End Sub
    

    Thanks-PNRao

  • ravindra Tháng Tám 22, 2015 tại 10. 40 giờ tối

    Tôi muốn lấy dữ liệu từ sổ làm việc này sang sổ làm việc khác bằng cách sử dụng mã hóa VBA. Vì vậy, bạn có thể xin vui lòng giúp tôi

  • PNRao Tháng tám 23, 2015 tại 2. 10 giờ sáng

    Xin chào Ravindra,
    Bạn có thể sử dụng lệnh Sao chép như minh họa bên dưới.

    Workbooks["Book1"].Sheets["Sheet1"].Range["A1:B10"].Copy _
    Destination:=Workbooks["Book2"].Sheets["Sheet1"].Range["E1"]
    

    Thanks-PNRao

  • Brad Bouchaud Tháng Mười Một 6, 2015 lúc 7. 47 giờ sáng

    Xin chào và cảm ơn trước.
    Tôi có một Danh sách gồm 3 mục mỗi hàng trong một Trang tính có 30 hàng như vậy và một nút bên cạnh mỗi hàng để chạy Macro nhằm xóa nội dung khi được yêu cầu.
    Các macro khác thực hiện các chức năng trên dữ liệu trong danh sách.
    Thật không may, tôi đang sử dụng. ActiveCell dường như không phát hiện ra tôi đang ở trong Ô có nút nhưng đang sử dụng ô cuối cùng mà tôi đã ở đó, có ý tưởng nào về cách tôi có thể xóa nội dung của 3 ô bên cạnh các nút mà không cần viết 30 macro khác nhau không?

  • Chủ Đề