本帖最后由 wcymiss 于 2011-12-19 11:43 编辑
【字典2班.012】sunjing-zxl 交作业
- Sub sunjing_zxl()
- Dim arr1, arr2(), arr3(), n As Long, i As Long
- Dim str As String, m As Long
- n = [A65536].End(xlUp).Row
- Range("C1:C65536").ClearContents
- arr1 = Range("A1:A" & n)
- ReDim arr2(1 To n, 1 To 1)
- ReDim arr3(n)
- For i = 1 To n
- str = Join(arr3, ",")
- If InStr(1, str, "," & arr1(i, 1) & ",", 0) = 0 Then
- m = m + 1
- arr2(m, 1) = arr1(i, 1)
- arr3(m) = arr1(i, 1)
- End If
- Next i
- Range("C1:C" & n) = arr2
- End Sub
复制代码
redim arr3(n) ,后期赋值从arr(1)开始,arr(0)时始终为空值,join(arr3,",")的结果也始终是以","开头的,这个方法个人认为比较好。
Range("C1:C" & n) = arr2,这里用m比较好。因为去重后数组的有效个数是m个,Range("C1:C" & m) 可节省对空单元格操作的时间。
instr方法可以达到去重效果而且通用于文本,但就本例而言,不算是最好的方法。
----------wcymiss
|