EXCEL如何实现动态筛选不重复记录复制到新列中
求一函数公式:工作表中有几千条记录,希望从中查找中不重复的记录复制到新列中,即无论某一记录有一条或多条(当在“现状”列中加两笔相同的F,“结果”列中则只Show出一个F,A、B、C、D、F),我只需要一条。如:
现状 结果
A A
A B
B C
C D
C
C
D
这玩意用公式好像完成不了吧?
用vba:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
Columns("A:A").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("B1"), Unique:=True
End If
End Sub
不知道你的Excel版本是多少,2007及以上的,先把你要的列复制粘贴到新的一列,然后选中这一列,在工具栏数据标签页里面,有个删除重复项,点击,Excel会自动给你删除掉重复项,只保留一个。
同时,也可以根据多个列来判断是否重复,比如你有5列,但是你只是判断其中某3列如果都相同的话,认为就是重复的,那么选中这5列,点击删除重复项,在弹出来的对话框中,选择判断重复的列,确定后,你选择的那几列都相同的行,只保留第一个,其余的重复的会被删除。
Topc008的这段VBA绑定的是第一列改变这个事件,所以在你的第一列单元格有改变的时候才触发。你在第一列某个单元格改一个值看看是不是就有反应了。
你可以把Sub里面的部分提取出来,比如下面那样,然后你可以绑定其他事件,在相应的事件里面调用这个过程,也可以加一个按钮或者用户直接点击宏里面的过程来触发。关键代码是_**AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range(需要复制到的列), Unique:=True**_
Sub UniqueList()
Dim LR As Long
LR = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row
Range("A1:A" & LR).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("B1"), Unique:=True
End Sub