1、假设A列是我们要处理的数据,包含了重复的项目,我们要把这些重复的项目剔除掉,然后贴在C列上。
2、我们蚤疣毖扒依旧按下熟悉的alt+f11进入vbe编辑器,新建一个模块输入代码:Sub 提取唯一值()Dim Rng As RangeDim Str As Stri荏鱿胫协ngDim EndRowNo As IntegerEndRowNo = Range("A1").End(xlDown).Row '找出A列最大行数For Each Rng In Range("A2:A" & EndRowNo) '遍历A列每一个单元,如果没有和之前的值重复则合并到Str里去,并用“/”隔开 If Not Str Like "*" & Rng & "*" Then '用Not like判断值是否已经合并过 Str = Str & "/" & Rng End IfNextStr = VBA.Mid(Str, 2, Len(Str)) '把生成的字符串中第一个“/”号去掉Dim arrarr = Split(Str, "/") '使用split函数生成数组,这个数组内的元素就是我们要找的唯一值了Range("c2:c" & UBound(arr) + 2) = WorksheetFunction.Transpose(arr) '把生成的数组贴到目标区域End Sub
3、我们回到刚才的表格,把vbe编辑器缩小,并按下运行键,我们就可以看到唯一值就提取到C列中去了。
4、最后方便大家理解解释一下代码:Dim arr 声明不定数组的方式,不需要加上arr()split函数可以将字串按某分割符号转姝耒匝揎化成数组,代码中“/”符号,可以替换成其他的符号UBound(arr) + 2 UBound找出的是数组的最大下标,但数组的索引是从0开始的,所以实际元素的数量要加上1,然后C列是从第二行开始黏贴的,所以又要加上1,所以C列的行数就是数组的最大下标+2了。WorksheetFunction.Transpose(arr)单元格黏贴数组的时候,默认一维数组是“行”的形式,如range("a1:g1"),但我们的目标是C列,为列的形式,所以我们要用这个Transpose函数转化数组,否则会报错哦。