使用高级过滤器获取唯一值不起作用?
Get Unique Values Using Advanced Filters Not Working?
我有两张纸:
Sheet 2:
Column C
Supplier Name
A
A
B
B
C
Sheet 1(期望的结果)
Column G
A
B
C
我正在尝试在 Sheet 1 的 G 列中创建唯一供应商名称列表,如上所示。
我正在使用此代码:
Sub LIST()
Dim r1 As Range, r2 As Range
Dim lastrow As Long
lastrow = Sheets("Data").Cells(Rows.Count, "C").End(xlUp).row
Set r1 = Sheets("Data").Range("C2:C" & lastrow)
Set r2 = Sheets("Sheet1").Range("G16")
r1.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=r2, unique:=True
End Sub
此代码无法正常工作。它显示第一个供应商名称 A 是重复的,如下所示:
Sheet 1
Column G
A
A
B
C
高级过滤器需要一个 header 行,它在复制到操作中进行。由于您没有分配或包含一个,r1.AdvancedFilter
命令假定 C2 是 header 行。
将 Range("C2:C" & lastrow)
更改为 Range("C1:C" & lastrow)
,以便高级筛选器有 header 行可执行。
Sub LIST()
Dim r1 As Range, r2 As Range
Dim lastrow As Long
lastrow = Sheets("Data").Cells(Rows.Count, "C").End(xlUp).Row
Set r1 = Sheets("Data").Range("C1:C" & lastrow)
Set r2 = Sheets("Sheet1").Range("G16")
r1.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=r2, Unique:=True
End Sub
请注意,您将携带 C1 到 Sheet1!G16。不需要就删除。
交替使用直接值传输和 RemoveDuplicates 而不是 AdvancedFilter。
Sub nodupeLIST()
Dim r1 As Range, lastrow As Long
With Worksheets("Data")
lastrow = .Cells(Rows.Count, "C").End(xlUp).Row
Set r1 = .Range("C2:C" & lastrow)
End With
With Worksheets("Sheet1")
With .Range("G16").Resize(r1.Rows.Count, 1)
.Cells = r1.Value
.RemoveDuplicates Columns:=1, Header:=xlNo
End With
End With
End Sub
我有两张纸:
Sheet 2:
Column C
Supplier Name
A
A
B
B
C
Sheet 1(期望的结果)
Column G
A
B
C
我正在尝试在 Sheet 1 的 G 列中创建唯一供应商名称列表,如上所示。
我正在使用此代码:
Sub LIST()
Dim r1 As Range, r2 As Range
Dim lastrow As Long
lastrow = Sheets("Data").Cells(Rows.Count, "C").End(xlUp).row
Set r1 = Sheets("Data").Range("C2:C" & lastrow)
Set r2 = Sheets("Sheet1").Range("G16")
r1.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=r2, unique:=True
End Sub
此代码无法正常工作。它显示第一个供应商名称 A 是重复的,如下所示:
Sheet 1
Column G
A
A
B
C
高级过滤器需要一个 header 行,它在复制到操作中进行。由于您没有分配或包含一个,r1.AdvancedFilter
命令假定 C2 是 header 行。
将 Range("C2:C" & lastrow)
更改为 Range("C1:C" & lastrow)
,以便高级筛选器有 header 行可执行。
Sub LIST()
Dim r1 As Range, r2 As Range
Dim lastrow As Long
lastrow = Sheets("Data").Cells(Rows.Count, "C").End(xlUp).Row
Set r1 = Sheets("Data").Range("C1:C" & lastrow)
Set r2 = Sheets("Sheet1").Range("G16")
r1.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=r2, Unique:=True
End Sub
请注意,您将携带 C1 到 Sheet1!G16。不需要就删除。
交替使用直接值传输和 RemoveDuplicates 而不是 AdvancedFilter。
Sub nodupeLIST()
Dim r1 As Range, lastrow As Long
With Worksheets("Data")
lastrow = .Cells(Rows.Count, "C").End(xlUp).Row
Set r1 = .Range("C2:C" & lastrow)
End With
With Worksheets("Sheet1")
With .Range("G16").Resize(r1.Rows.Count, 1)
.Cells = r1.Value
.RemoveDuplicates Columns:=1, Header:=xlNo
End With
End With
End Sub