簡體   English   中英

根據單元格值刪除范圍內的行

[英]Delte rows in a range based on a cell value

我有 Q6:V100 范圍內的員工數據。 數據不在表中,數據由 6 列(職務、職責、工資等)組成,基於第一列“當前受雇”,我想刪除該員工不再受雇的行(= "")。 第一列顯示“O”(如果使用)和“”(只是一個空白)如果沒有。 這是我試過的代碼。 但它顯示錯誤消息

“范圍類的自動過濾方法失敗”

我不知道出了什么問題......如果有人能幫忙,我將不勝感激!

Sub Delete_Rows_Based_On_Value()

Dim ws As Worksheet


  Set ws = ThisWorkbook.Worksheets("Trainings")
  ws.Activate

  'Clear any existing filters
  On Error Resume Next
    ws.ShowAllData
  On Error GoTo 0

  '1. Apply Filter
  ws.Range("Q6:V100").AutoFilter Field:=1, Criteria1:=""

  '2. Delete Rows
  Application.DisplayAlerts = False
    ws.Range("Q7:V100").SpecialCells(xlCellTypeVisible).Delete
  Application.DisplayAlerts = True

  '3. Clear Filter
  On Error Resume Next
    ws.ShowAllData
  On Error GoTo 0

End Sub

我會建議一個更強大的系統,在 Q 列中有一個符號說明:1 = 受雇,0 = 未受雇

Sub Delete_Rows_Based_On_Value()

Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Trainings")
    ws.Activate

Dim i As Integer
Dim n as Integer

    n = ws.Range("Q6").CurrentRegion.Rows.Count

    For i = n + 5 To 6 Step -1
        If ws.Cells(i, 17).Value = 0 Then
            ws.Rows(i).Delete
        End If
    Next i

如果您不適應新系統,請更改 If 語句以匹配您當前的系統:

If ws.Cells(i, 17).Value = "" Then

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM