如果作業表包含 2000 行,則下面的代碼需要一個多小時才能完成。我無法在陣列中轉換。我想如果我能把它轉換成陣列會快得多。
Sub CompareAndCopy()
Dim NumberOfValues, NumberOfValues2 As Integer
Dim value1, value2 As String
Dim value3 As Long
Dim i, n, j As Long
j = 2
Sheet1.Activate
NumberOfValues = Sheets("Sheet1").Range("M2").End(xlDown).Row
NumberOfValues2 = Sheets("Sheet1").Range("A2").End(xlDown).Row
For i = 1 To NumberOfValues
value3 = 0
For n = 1 To NumberOfValues2`enter code here`
value1 = LCase(Range("A" & n).Value)
value2 = LCase(Range("M" & i).Value)
If Mid(value1, 1, Len(value2)) = value2 Then
value3 = value3 Range("C" & n).Value
Range("T" & i).Value = value3
End If
Sheet1.Activate
j = j 1
Next
Sheet1.Activate
Next
End Sub
uj5u.com熱心網友回復:
包括
Application.Calculation = xlManual回圈之前和回圈
Application.Calculation = xlAutomatic之后。
正如其他人建議的那樣,洗掉那些無用的Activate.
uj5u.com熱心網友回復:
這是正確的代碼嗎?
Sub CompareAndCopy()
Dim NumberOfValues, NumberOfValues2 As Integer
Dim value1, value2 As String
Dim value3 As Long
Dim i, n, j As Long
NumberOfValues = Sheets("Sheet1").Range("M2").End(xlDown).Row
NumberOfValues2 = Sheets("Sheet1").Range("A2").End(xlDown).Row
Application.Calculation = xlManual
For i = 1 To NumberOfValues
value3 = 0
Application.Calculation = xlManual
For n = 1 To NumberOfValues2`enter code here`
value1 = LCase(Range("A" & n).Value)
value2 = LCase(Range("M" & i).Value)
If Mid(value1, 1, Len(value2)) = value2 Then
value3 = value3 Range("C" & n).Value
Range("T" & i).Value = value3
End If
Next
Application.Calculation = xlAutomatic
Next
Application.Calculation = xlAutomatic
uj5u.com熱心網友回復:
是的,上面的代碼在 1 分鐘內完成。
非常感謝帕特里克。就我所知,如果我必須使用陣列,這怎么可能?再次感謝。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/410257.html
標籤:
