除非您使用veeeery舊機器,或者您的XL2007工作表中有一個bazillion行,否則循環將會足夠快。誠實!
不要相信我嗎?看這個。我用這個充滿隨機字母一百萬行範圍:
=CHAR(RANDBETWEEN(65,90))
然後我寫了這個功能,並使用名爲它從一個26單元格範圍控制移輸入:
=TRANSPOSE(UniqueChars(A1:A1000000))
這裏的不是非常優化的VBA函數我在一兩分鐘從黑客:
Option Explicit
Public Function UniqueChars(rng As Range)
Dim dict As New Dictionary
Dim vals
Dim row As Long
Dim started As Single
started = Timer
vals = rng.Value2
For row = LBound(vals, 1) To UBound(vals, 1)
If dict.Exists(vals(row, 1)) Then
Else
dict.Add vals(row, 1), vals(row, 1)
End If
Next
UniqueChars = dict.Items
Debug.Print Timer - started
End Function
在我十歲的Core 2 Duo T7300(2GHz的)筆記本電腦花了0.58秒。
您發佈的示例看起來很奇怪,請更改它以使其可讀。 – schnaader 2008-11-11 19:36:09
這不是空格鍵問題。他使用了一個奇怪的字符集或其他東西。 – 2008-11-11 19:41:22