类型不匹配错误:Excel VBA,循环列A的值,删除当前行和它下面的行直到下一个值

时间:2017-12-11 21:27:08

标签: excel vba loops rowdeleting

我遇到了EXCEL的问题。我试图循环列A中的一些数据,以将这些值与另一张表上的列表进行匹配。如果名称显示在工作表2上,则应选择该行并将其删除,并删除后面在A列中具有空白单元格的所有行,直到它到达下一个非空单元格。

我的建议取得了一些进展。这是一个更新的现实生活'我拥有的数据样本。

"Raw" data

以下是它的样子。

Processed Data

我目前使用的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

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

This is what is currently happening.

1 个答案:

答案 0 :(得分:0)

您的类型不匹配错误发生在"设置值=行(rFilt)"。 Rows属性参数应该是整数,而不是范围。

示例:

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

我认为您的代码存在其他问题,但可能先解决这个问题,然后我们会看到我们从哪里开始。