我的数据集在到达第一块填充单元格之前以一堆空行开始。在B列中(在宏运行后转移到C列)我有一个官员姓名,后面跟着一堆空白行,然后是另一个官员姓名等。这个专栏可能有重复的官员姓名。
我尝试编写一个高级过滤器宏来将唯一的官员名称列表复制到单元格A1中。
Private Sub UserForm_Initialize()
Columns("A:A").Insert 'inserts column to left of A for officer names to be pasted in
With Range("c1:c" & Cells(Rows.Count, 3).End(xlUp).Row)
.AdvancedFilter Action:=xlFilterCopy, copytorange:=Cells(2, 1), unique:=True
On Error Resume Next
End With
End Sub
但我的结果是这样的:
主任A
(空行)
主任A
警官B
主任C
等....
由于此结果与没有VBA的高级过滤器相同,我认为这是我的原始数据格式化的方式。我尝试手动向“官员名称”列添加标题,但没有任何运气。
如何让我的结果只显示非重复名称列表?
答案 0 :(得分:0)
你的代码很棒。只是将顶行视为标题行,这就是你看到军官A两次而没有其他军官两次的原因。
我建议您创建自己的标题行,例如“官员名称”,并将其合并到过滤器中。然后,您将在第二列中看到这个重复,您可以忽略它。
您可以使用
等代码删除空白行ActiveSheet.Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
答案 1 :(得分:0)
你可以使用" RemoveDuplicates"方法改为。
With ActiveSheet
.Columns("A").Insert
.Range("C1:C" & .Cells(.Rows.Count, 3).End(xlUp).Row).Copy
.Range("A1").PasteSpecial Paste:=xlPasteValues
.Range("A:A").RemoveDuplicates Columns:=1, Header:=xlNo
Application.CutCopyMode = False
End With