根据单元格值删除范围内的行

时间:2019-12-09 10:10:33

标签: excel vba

我有一个有关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

1 个答案:

答案 0 :(得分:1)

我建议使用更可靠的系统,在Q栏中注明: 1 =就业, 0 =未就业

// vanilla websocket
const vanillaWS = new WebSocket('wss://ws.kraken.com');
vanillaWS.onopen = () => {
  console.log('vanilla websocket opened');
}
vanillaWS.onmessage = (message) => {
  console.log(message.data);
}

// socket.io websocket
const ioSocket = io('wss://ws.kraken.com');
ioSocket.on('connect', () => {
  console.log('socket.io socket opened');
});
ioSocket.on('message', (message) => {
  console.log(message.data);
});

如果您不适应新系统,请更改If语句以匹配当前系统:

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