2017-06-19 39 views
1

我的數據集在到達第一個填充單元塊之前會先從一堆空行開始。在B列(在宏運行後轉移到C列)我有一個軍官名字,後面跟着一堆空白行,後面跟着另一個軍官名字等。這個列有可能是重複的軍官名字。用於唯一身份驗證的Excel高級過濾器會導致一個重複的條目

我試着編寫一個高級過濾器宏來將獨特的軍官姓名列表複製到單元格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 

但我的結果是這樣的:
主任的
(空行)
主任的
官乙
官ç
等....

由於該結果是就像我做了一個沒有VBA的高級過濾器一樣,我認爲這是我原始數據格式化的方式。我嘗試手動添加標題到主管名稱列沒有任何運氣。

如何讓我的結果只顯示非重複名稱列表?

回答

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 
+0

我搜索了這樣一種方法,因爲我認爲VBA肯定有類似的東西。謝謝。 – GoldStandard

0

您的代碼很棒。只是第一行被當作標題行,這就是你兩次看到軍官A而沒有其他軍官的原因。

我建議製作自己的標題行,如「官員名稱」,並將其納入過濾器中。然後您會看到第二欄中的重複內容,您可以忽略它。

您可以通過使用代碼,如

ActiveSheet.Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete 
+0

這也可以。謝謝。 – GoldStandard

相關問題