我目前正在尝试根据A列中的重复项删除A列到第V列的行。
我目前的公式是:
Workbooks(TgtWB).ActiveSheet.Range("A15:V500").RemoveDuplicates _
Columns:=Array(1), Header:=xlYes
我的标题位于第15行。
我得到的错误是
应用程序定义或对象定义的错误
我尝试用ActiveSheet
切换worksheet("xxx")
,但似乎仍无法正常工作。我不确定我在这里做错了什么。
答案 0 :(得分:2)
尝试(请注意工作表 S ,而不是工作表),
Workbooks(TgtWB).worksheetS("xxx").Range("A15:V500").RemoveDuplicates Columns:=1, Header:=xlYes
'or,
ActiveSheet.Range("A15:V500").RemoveDuplicates Columns:=1, Header:=xlYes
如果TgtWB已打开,则可能包含也可能不包含ActiveSheet。每个打开的工作簿都没有ActiveSheet。应用程序实例只有一个ActiveSheet。 ActiveSheet不是Workbooks集合的属性。
答案 1 :(得分:0)
使用内置功能非常棒,除非您是像我一样的初学者,.Applications
和.Worksheets
会让人感到压力和困惑。对于一个小的数据集,例如A到V列(显然取决于你有多少行),循环和if语句不仅可以很好地工作,而且也可以是很好的实践!这样的事情可能效果很好:
Dim CurrentValue, LastValue As Variant
LastValue = ""
For I = 1 To 500
CurrentValue = Sheets("Sheet 1").Range("A" & i).Value
If CurrentValue = LastValue Then
Sheets("Sheet 1").Range("A" & i & ":V" & i).Clear Contents
Else
LastValue = CurrentValue
End If
Next i
这将循环遍历每一行,询问单元格中的当前值是否与先前观察到的相同(第一个除外,第一个将自动保存),如果已经存在,则将清除行的内容。如果它不相同,它会将它分配给新变量并开始寻找新变量。
这种方法有两个缺点,可以通过简单地根据需要调整代码来解决:
这是非常基本的,但我发现作为初学者非常有帮助,希望其他初学者和你自己可以从中学到一些东西。
快乐编码!