【发布时间】:2018-05-15 08:29:03
【问题描述】:
我在一个特定的工作簿中有多个工作表,每个工作表都有员工编号。工作表已经按照 A 列始终是员工编号的方式进行了排序。
所以我需要做的是遍历所有工作表并应用 RemoveDuplicates 函数删除在 A 列中找到的所有重复的员工编号。
注意 - 我不想让员工编号只出现在一张纸上;我试图让员工编号在每张纸上只出现一次。
当我命名一个特定的工作表时,它可以工作,但不能让它循环工作。
测试1:
Sub deleteDuplicate()
Dim ws As Worksheet
Dim wkbk1 As Workbook
Dim w As Long
Dim lRow As Long
Dim iCntr As Long
Set wkbk1 = Workbooks("3rd Party.xlsm")
wkbk1.Activate
For Each ws In ThisWorkbook.Worksheets
' Find last row in column A
lRow = ws.Range("A" & ws.Rows.count).End(xlUp).Row
For iCntr = lRow To 1 Step -1
ws.lRow.RemoveDuplicates Columns:=1, Header:=xlYes
Next iCntr
Next ws
End Sub
测试2:
Sub deleteDuplicate()
Dim ws As Worksheet
Dim wkbk1 As Workbook
Dim w As Long
Dim lRow As Long
Dim iCntr As Long
Set wkbk1 = Workbooks("3rd Party.xlsm")
wkbk1.Activate
With wkbk1
For w = 1 To .Worksheets.count
With Worksheets(w)
.UsedRange.RemoveDuplicates Columns:=1, Header:=xlYes
End With
Next w
End With
End Sub
【问题讨论】:
-
在测试 1 中,您没有在循环中使用
iCntr。但是,测试 2 对我来说效果很好。 -
@dwirony 测试 2 出现错误 - 应用程序定义或对象定义错误
-
你的工作簿叫什么名字,你在
Set wkbk1 = Workbooks("3rd Party.xlsm")线上的宏里有什么? -
我徒劳地试图让你的代码工作,并且在(大)之后我发现我的 excel (2003) 版本不支持 RemoveDuplicates 功能。您运行的是哪个版本的 Excel?
-
@dwirony 我有那行代码。调试卡在 .UsedRange.RemoveDuplicates Columns:=1, Header:=xlYes 行,出现我上面提到的错误。