32位的Excel 365上64位的Win7 工作表300600排x 105列 目標:計算在每個Column唯一計數(Excel的VBA VS式)更快的方法
嘗試的解決方案1的唯一條目的數量:式
{=SUM(1/COUNTIF(A8:A300600,A8:A300600))}
問題:長期運行時,凍結的Excel,必須停止計算
嘗試性解決方案2:VBA UDF
Function UniqueCount(Selection As Range) As Integer
Dim UniqueArray()
ReDim UniqueArray(0 To Selection.Count)
Dim Rng As Range
Dim CUniqueCount As Integer
CUniqueCount = 0
For Each Rng In Selection
For i = 0 To Selection.Count
If UniqueArray(i) = Rng.Value Then Exit For
If UniqueArray(i) = "" Then
UniqueArray(i) = Rng.Value
CUniqueCount = CUniqueCount + 1
Exit For
End If
Next i
Next
UniqueCount = CUniqueCount
End Function
注:這是速度更快,但我仍然在尋找更快的接近
您是否試過數據模型的數據透視表? – pnuts
我還沒有,我這樣做的原因是爲了將數據集分解成更小的表格,以便上傳到我的訪問數據庫中 - 數據集對於訪問的內存限制太大而無法在內部中斷。我想我也會通過數據透視表來達到這些限制。當在所有105列中應用公式化方法時,我遇到了同樣的限制。 – Schalton
我相信PowerPivot也許能夠應付,包括計數和肢解。 – pnuts