Excel中的高级过滤器可在一个重复的条目中生成唯一条目

时间:2017-06-19 20:57:19

标签: excel-vba vba excel

我的数据集在到达第一块填充单元格之前以一堆空行开始。在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的高级过滤器相同,我认为这是我的原始数据格式化的方式。我尝试手动向“官员名称”列添加标题,但没有任何运气。

如何让我的结果只显示非重复名称列表?

2 个答案:

答案 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