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
- Nhấn Ctrl + H. Excel hiển thị tab Thay thế của hộp thoại Tìm và Thay thế
- Nhấp vào nút Tùy chọn để mở rộng hộp thoại. [Xem Hình 1. ]
- Trong hộp Find What, nhập 0
- Đảm bảo hộp Thay thế bằng trống
- Chọn hộp kiểm Khớp toàn bộ nội dung ô
- Nhấn Replace All để thực hiện thay thế
Hình 1. Tab Thay thế mở rộng của hộp thoại Tìm và 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?