因为是要保留源数据的,所以此处不允许用删除重复项等一些操作。 本文介绍一种函数和一段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就能运行结果。 本篇结束。Vba属于excel中较高级的部分。菜鸟学Excel的阶段,应该是基础制表-函数-透视表。 |