excel vba – 将唯一值复制到新工作表 – 无标题

我在srcSheet中有以下10个值的列A:

bob mary sez mary mik bob tim bob ni whit 

我试图将唯一值只复制到另一个工作表中的列A,但我得到了第一个值“鲍勃”两次。 我知道这是因为AdvancedFilter将第一行作为标题,但我想知道这是否可以在VBA中完成,而不需要在上面添加标题行?

我的代码:

 Set rSrc = Worksheets(srcSheet).Range("A1:10") Set rTrg = Worksheets(trgSheet).Range("A1") rSrc.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=rTrg, Unique:=True 

没有选项不包含标题。 您可以删除副本后的顶部项目

 With rTrg.offset(1,0) Range(.Item(1), .End(xlDown)).Cut rTrg End With 

…或类似的东西与您的特定图纸布局。

编辑:更简单的做这样的事情

 Sub Tester() CopyUniques Sheet1.Range("C4").CurrentRegion, Sheet1.Range("e4") End Sub Sub CopyUniques(rngCopyFrom As Range, rngCopyTo As Range) Dim d As Object, c As Range, k Set d = CreateObject("scripting.dictionary") For Each c In rngCopyFrom If Len(c.Value) > 0 Then If Not d.Exists(c.Value) Then d.Add c.Value, 1 End If Next c k = d.keys rngCopyTo.Resize(UBound(k) + 1, 1).Value = Application.Transpose(k) End Sub