我制作了一个非常简单的Visual Basic脚本,它使用Excel中的高级过滤功能,将唯一值从一个工作表中的列复制到另一个工作表中的列。它适用于所有值,除了第一个出现两次的值。谁能告诉我这个小故障的原因?我尝试手动使用过滤器,结果相同。
Sub getUniqueRuns()
Sheets(2).Range("C2:C65536").AdvancedFilter Action:=xlFilterCopy,
CopyToRange:=Sheets(5).Range("A2"), Unique:=True
End Sub
答案 0 :(得分:4)
AdvancedFilter使用范围的顶行作为标题,然后从该范围的其余部分提供distict值。由于您已将第2行作为第一行提供,因此将其用作标题,然后将第3行作为数据。结果你得到重复。我建议您将范围更改为下面的范围,然后将标题复制到其中。
Sub getUniqueRuns()
Sheets(2).Cells.Clear
Sheets(2).Range("C1:C65536").AdvancedFilter Action:=xlFilterCopy,
CopyToRange:=Sheets(5).Range("A1"), Unique:=True
End Sub
答案 1 :(得分:0)
我的脚本遇到了同样的问题,我使用.offset(1)解决了该问题,以抵消rgData中的多余行。
Sub modHouse_Popularity()
'
' modHouse_Popularity Macro
' Select Houses and remove duplicates
'define range
Dim rg As Range
Set rg = ThisWorkbook.Worksheets("Popularity").Range("A2:A500")
'retain header
rg.Offset(1).ClearContents
'define data fields, criteria fields and out put fields
Dim rgData As Range, rgCriteria As Range, rgOutput As Range
Set rgData = ThisWorkbook.Worksheets("Facade requests").Range("Table1[House]").Offset(1)
Set rgCriteria = ThisWorkbook.Worksheets("Popularity").Range("a2")
Set rgOutput = ThisWorkbook.Worksheets("Popularity").Range("a3:a500")
'place data
rgData.AdvancedFilter xlFilterCopy, rgCriteria, rgOutput, True