0

我在使用 EXCEL 时遇到问题。我正在尝试遍历 A 列中的一些数据,以将这些值与另一张表上的列表进行匹配。如果名称出现在工作表 2 上,则应选择该行并将其删除,并删除其后在 A 列中有空白单元格的所有行,直到它到达下一个非空单元格。

根据您的建议,我已经取得了一些进展。这是我拥有的数据的更新的“现实生活”样本。

“原始数据

这就是它应该看起来的样子。

处理数据

我目前使用的 VBA 是:

Option Explicit
Sub RemoveDuplicates()
Application.ScreenUpdating = False
Dim rCrit As Range 'Range To Search For Supervisor names
Dim rFilt As Range 'Range To Remove Supervisor names
Dim lLoop As Long
Dim statsSheet As Worksheet
Dim supervisors As Worksheet


Dim i As Long 'looking for blank cells under the supervisor name
Dim values As Range
Dim counter As Integer
Set values = Range("a:a")





Set rCrit = Worksheets("supervisors").Range("A1", Worksheets
("supervisors").Range("A" & Rows.Count).End(xlUp))
Set rFilt = Worksheets("statssheet").Range("A1", Worksheets 
("statssheet").Range("A" & Rows.Count).End(xlUp))

For lLoop = rCrit.Rows.Count To 1 Step -1
    If WorksheetFunction.CountIf(rCrit, rFilt(lLoop).Value) > 0 Then
        Worksheets("statssheet").Rows(lLoop).Delete shift:=xlUp
End If

       For i = 1 To values.Cells.Count - 1
 If IsEmpty(values.Cells(i)) Then
 Worksheets("statssheet").Rows(i).Delete shift:=xlUp

 End If

Next i



Next lLoop
Application.ScreenUpdating = True
End Sub

不幸的是,当我运行此代码时,它只会删除最高主管名称,并且会删除每个员工的所有数据,看起来像这样。

这就是目前正在发生的事情。

4

1 回答 1

0

您的类型不匹配错误发生在“Set values = Rows(rFilt)”处。Rows 属性参数应该是一个整数,而不是一个范围。

例子:

Set values = Rows(3)
' This will return the first 3 rows of the active sheet.

我认为你的代码还有其他问题,但也许先解决这个问题,我们会看看我们从那里去哪里。

于 2017-12-12T01:13:03.967 回答