我遇到了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
不幸的是,当我运行此代码时,它只删除了最高管理员名称,并删除了每个员工的所有数据,看起来像这样。
答案 0 :(得分:0)
您的类型不匹配错误发生在"设置值=行(rFilt)"。 Rows属性参数应该是整数,而不是范围。
示例:
Set values = Rows(3)
' This will return the first 3 rows of the active sheet.
我认为您的代码存在其他问题,但可能先解决这个问题,然后我们会看到我们从哪里开始。