Excel - Một macro để xóa các hàng có giá trị cụ thể

Microsoft Excel là một trong những công cụ tiện lợi nhất để chơi với các con số. Trong trường hợp có một số lượng lớn các hàng hoặc cột có liên quan, Excel cũng có khung cơ bản trực quan có thể được sử dụng để ghi hoặc ghi các macro tùy chỉnh . Các macro VBA cho phép người dùng tự động hóa quy trình bằng cách có đầu vào người dùng tối thiểu. Các macro này có thể được tùy chỉnh để hoạt động trên các giá trị hoặc hàng cụ thể. Người dùng cũng có thể tùy chỉnh những gì nên là phạm vi bắt đầu và kết thúc cho các giá trị hoặc hàng cụ thể. Tất cả các tùy chọn này làm tăng việc sử dụng Excel như một ứng dụng xử lý dữ liệu .

  • Vấn đề
  • Dung dịch
  • Lưu ý rằng

Vấn đề

Về cơ bản những gì tôi có là một tờ đầy đủ thông tin về các phòng ban khác nhau và điều tôi muốn làm là xóa mọi hàng NGOẠI TRỪ các hàng có chứa một số giá trị được chỉ định (mà tôi muốn nhập khi chạy tập lệnh).

Giả sử trong cột có tên bộ phận (trong trang tính của tôi có tên là "Avd"), tôi muốn tập lệnh tìm bất kỳ ô nào không chứa, ví dụ: các số 1, 3, 5, 6 hoặc 21 .. v.v. (Tôi có khoảng 36 số khác nhau).

Dung dịch

Tất cả bạn phải làm là làm nổi bật thông tin trong cột và sau đó chạy Macro sau. Sẽ có một hộp sẽ nhắc bạn chọn giá trị bạn muốn giữ. Điều này có sẵn cho tối đa 30.000 hàng.

 Sub DeleteRows () Dim strToDelete As String Dim rngSrc As Range Dim NumRows As Integer Dim ThisRow As Integer Dim ThatRow As Integer Dim ThisCol As Integer Dim J As Integer Dim DeletingRows As Integer strToDelete = InputBox (" ? ", " Xóa hàng ") Đặt rngSrc = ActiveSheet.Range (ActiveWindow.Selection.Address) NumRows = rngSrc.Rows.Count ThisRow = rngSrc.Row ThatRow = ThisRow + NumRows - 1 ThisCol = rngSrc bottomRows As Integer bottomRows = 30000 For J = ThisRow To NumRows Bước 1 If Cells (J, ThisCol) = strToDelete Sau đó 'Rows (J) .Select topRows = J Thoát For DeletingRows = DelattedRows + 1 End If Next Jows + 1) Đến NumRows Bước 1 If Cells (J, ThisCol) strToDelete Then 'Rows (J) .Chọn bottomRows = J Thoát For' DeletingRows = DeletingRows + 1 End If Next J If topRows 4 Then ActiveSheet.Range (Cells (4 1), Các ô (topRows - 1, 52)). Chọn Selection.delete Shift: = xlUp End If ActiveSheet.Range (Các ô (bottomRows - topRows + 4, 1), Cells (30000, 52)). Chọn Selection.delete Shift: = xlUp 'MsgBox "Số lượng hàng đã xóa:" & DelattedRows End Sub 

Lưu ý rằng

Cảm ơn Jason cho mẹo này trên diễn đàn.

Bài TrướC TiếP Theo Bài ViếT

Lên Trên LờI Khuyên