|
发表于 2011-12-2 11:29
|
显示全部楼层
本楼为最佳答案
mhjbgf 发表于 2011-12-2 11:04
你这个算起来快,但结果跟公式结果不一样,假设A列有两个"1"或三个,1这个数就不要,只显示出现过一次的. - Sub wayy2()
- Dim i As Long
- Dim arr, arr1, arr2, arrz
- Dim d As Object
- Dim mrow As Long
- Set d = CreateObject("Scripting.Dictionary")
- arr = Range("A2", [a65536].End(xlUp))
- For i = 1 To UBound(arr)
- d(arr(i, 1)) = 1 + d(arr(i, 1))
- Next
- ReDim arrz(1 To d.Count, 1 To 1)
- arr2 = Application.Transpose(d.Items)
- arr1 = Application.Transpose(d.keys)
- For i = 1 To d.Count
- If arr2(i, 1) = 1 Then
- mrow = mrow + 1
- arrz(mrow, 1) = arr1(i, 1)
- End If
- Next
- [b2].Resize(mrow, 1) = arrz
- End Sub
复制代码 没看明白,你也没说明白题意,改了下,再看看,公式结果好像少了一个值45
|
|