返回列表 上一主題 發帖

[發問] 求救如何縮短VBA執行時間

回復 1# lilizzzz

請確認是否為您的需求,感謝

Sub tt()
Dim xD, Arr, i&, j%, N&
Set xD = CreateObject("Scripting.Dictionary")
Arr = Range([工作表1!U1], [工作表1!A65536].End(3))
    For i = 1 To UBound(Arr)
        If Not xD.Exists(Arr(i, 1)) Then
            N = N + 1
            xD(Arr(i, 1)) = N
            For j = 1 To UBound(Arr, 2)
                Arr(N, j) = Arr(i, j)
            Next
        End If
    Next
Range("A1").Resize(UBound(Arr), UBound(Arr, 2)) = ""
Range("A1").Resize(N, UBound(Arr, 2)) = Arr
End Sub

TOP

回復 4# lilizzzz


Sub tt()
Dim xD, Arr, i&, j%, N& '
Set xD = CreateObject("Scripting.Dictionary")
Arr = Range([工作表1!U1], [工作表1!A65536].End(3)) '原資料裝入數組
    For i = 1 To UBound(Arr)
        If Not xD.exists(Arr(i, 1)) Then
            N = N + 1   '計算不重複唯一值的次數
            xD(Arr(i, 1)) = N   '不重複唯一值的裝入字典
            For j = 1 To UBound(Arr, 2)   '將唯一值的其它欄位的值裝入數組
                Arr(N, j) = Arr(i, j)
            Next
        End If
    Next
Range("A1").Resize(UBound(Arr), UBound(Arr, 2)) = ""    '清除原資料
Range("A1").Resize(N, UBound(Arr, 2)) = Arr             '貼上唯一值相關的值
End Sub

TOP

回復 6# lilizzzz


    請問可以提供資料嗎? 我再確認問題, 謝謝。

TOP

回復 13# lilizzzz


    為甚麼會用 i&  j% n& ' 來宣告 ?
-->可參考如下網址解釋,還蠻詳細的,謝謝。
http://forum.twbts.com/viewthrea ... amp;page=1#pid22366
Dim i%就是Dim i As Integer的簡寫
一些常用的代表符號如下
Integer 的型態宣告字元是百分比符號 %
Long 的型態宣告字元為 &
Double 的型態宣告字元是數字符號 #
Single 的型態宣告字元為 !
String 的型態宣告字元為 $

TOP

        靜思自在 : 【時間成就一切】時間可以造就人格,可以成就事業,也可以儲積功德。
返回列表 上一主題