我正在使用以下方法將列中的所有條目(第 1 行中的標題除外)修剪為最后四個字符:
Range("A2").Select
Do While ActiveCell <> ""
ActiveCell = Right(ActiveCell.Value, 4)
ActiveCell.Offset(1, 0).Select
Loop
它有效,但在大檔案上速度很慢。有誰知道我如何加快速度?
uj5u.com熱心網友回復:
除了評論中的鏈接答案外,我更喜歡在回圈時使用變體陣列。它們存盤在記憶體中。每當訪問作業表時,vba 都需要放慢速度。通過限制我們的互動,我們可以加快速度。
Sub right4()
With ActiveSheet 'better to use actual worksheet ie Worksheets("Sheet1")
Dim rng As Range
Set rng = .Range("A2", .Cells(.Rows.Count, 1).End(xlUp))
End With
Dim rngarr As Variant
rngarr = rng.Value
Dim i As Long
For i = 1 To UBound(rngarr, 1)
rngarr(i, 1) = Right(rngarr(i, 1), 4)
Next i
rng.Value = rngarr
End Sub
如果不想使用回圈:
Sub right4()
With ActiveSheet 'better to use actual worksheet ie Worksheets("Sheet1")
Dim rng As Range
Set rng = .Range("A2", .Cells(.Rows.Count, 1).End(xlUp))
rng.Value = .Evaluate("INDEX(RIGHT(" & rng.Address(0, 0) & ",4),)")
End With
End Sub
雖然我猜第二個的時間會接近第一個代碼。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/353773.html
