Excel高级技巧:提取不重复的数据

2015-04-01@Excel报表顾问 

因为是要保留源数据的,所以此处不允许用删除重复项等一些操作。

本文介绍一种函数和一段vba代码,进行运算。

源数据如下:

函数的方式是D1=INDEX(A:A,SMALL(IF(MATCH($A$1:$A$10,$A$1:$A$10,)=ROW($1:$10),ROW($1:$10),65536),ROW(A1))),最后是数组三键来完成。

因为区域是A1:A10,所以公式里都是10.如果区域是20,就都改成20.

因为涉及的函数很多,对于不了解函数的菜鸟来说,也不好理解。所以就直接告诉大家如何去修改,使用。见红字。

VBA编程的方法是按ALT+F11,进入VBE编辑器,插入模块。输入代码如下:

Private Sub 提取不重复_Click()

Dim myList As New Collection, Cel As Range, itm, i As Integer, maxRow As Long

maxRow = Sheets("Sheet1").[B65536].End(xlUp).Row '获取A列的最后一个非空单元格的行号 Office2007的最大行号是1048576

On Error Resume Next

For Each Cel In Range("B1:B" & maxRow)

myList.Add Cel.Value, CStr(Cel.Value)

Next

On Error GoTo 0

i = 1

For Each itm In myList

Cells(i, 4) = itm '新数据输出列,4=D列

i = i + 1

Next

End Sub

按F5就能运行结果。

  作者介绍:薛奔(Sharpen),大电商网站运营分析师。

微软Excel专家认证,擅长Excel数据报表自动化。微博@Excel报表顾问

自营店铺:Xexcel.taobao.com 销售本人原创的全系列Excel视频教程


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章