我有一個Excel表,其中列「A」包含序列號。一個序列號可能會重複到幾行。列「A」中的單元格被合併[如果多於一行出現在一個序列號中]。我製作了以下宏來合併這些單元格,並在隨後的空白行中重複序列號,直到出現下一個序列號。我面臨的問題是這個宏運行速度很慢,例如對於包含30,000行的工作表,可能需要很長時間。有沒有一個整潔,不太慢的方法來做到這一點?unMerge和填補空白VBA運行緩慢
這是我使用的代碼。請指導。
Sub Unmerge_Cell()
Dim NumRows As Integer
Range("B2").Select
NumRows = Range("B2", Range("B2").End(xlDown)).Rows.Count
Columns("A:A").Select
Selection.UnMerge
Range("A2").Select
Range("A2").Activate
For i = 1 To NumRows - 1
If IsEmpty(ActiveCell.Offset(1, 0).Value) = True Then
ActiveCell.Select
Selection.Copy
ActiveCell.Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Else
ActiveCell.Offset(1, 0).Select
ActiveCell.Offset(0, 0).Activate
End If
Next
Range("A1").Select
End Sub
問候
避免使用'.Select'和'.Activate',因爲它們都導致事情運行速度非常緩慢,並且總是有更好的編寫代碼的方法。 – braX
@braX能否請您提出替代方案。 – KhawarAmeerMalik
只要你有一行以'.Select'結尾的代碼行,並且下一行是'Selection',你就可以將它們結合起來......'Columns(「A:A」).UnMerge'做同樣的事情。 – braX