返回列表 上一主題 發帖

[發問] vba程式碼簡化

回復 1# 棋語鳥鳴


方便提供附件嗎? 謝謝

TOP

回復 4# 棋語鳥鳴

請測試看看,謝謝

Sub test()
Dim Arr, xD, T$, R%, C%, i&, j&
Application.EnableEvents = False
Tm = Timer
Set xD = CreateObject("Scripting.Dictionary")
Arr = Range([資料來源!k1], [資料來源!a65536].End(3))
For i = 2 To UBound(Arr)
    xD(Arr(i, 1)) = 1
    For j = 2 To UBound(Arr, 2)
        xD(Arr(i, 1) & "_" & Arr(1, j)) = Arr(i, j)
    Next
Next
For Each sht In Worksheets
    If InStr(sht.Name, "月") Then
        With Sheets(sht.Name)
            R = .Range("a65536").End(3).Row
            C = .Cells(1, Columns.Count).End(xlToLeft).Column
            Arr = .Range(.[a1], .Cells(R, C))
            For i = 2 To UBound(Arr)
                If xD(Arr(i, 1)) = 1 Then
                    For j = 2 To C
                        Arr(i, j) = xD(Arr(i, 1) & "_" & Arr(1, j))
                    Next
                End If
            Next
            .Range("a1").Resize(R, C) = Arr
        End With
    End If
Next
MsgBox Timer - Tm
Application.EnableEvents = True
End Sub

TOP

本帖最後由 samwang 於 2021-9-10 11:56 編輯

回復 1# 棋語鳥鳴


當資料大時跑的速度有點久,不知有其有辦法再簡化或其他方式執行??
>>如#3 的ikboy大大說的轉用陣列會快得多,  #5 程式是用陣列+字典速度比較快,但無法比您的程式碼在簡化
如果要再簡化且速度快,可能需要其他大大協助,謝謝。

TOP

        靜思自在 : 有時當思無時苦,好天要積雨來糧。
返回列表 上一主題