我有600k行,想要删除起始和尾随空格。我有以下内容,但速度很慢:
Sub Macro1()
'
' Macro1 Macro
'
'
Range("D1").Select
ActiveCell.FormulaR1C1 = "=TRIM(RC[-1])"
Range("D1").Select
Selection.AutoFill Destination:=Range("D1:D4")
Range("D1:D4").Select
Columns("D:D").Select
Selection.Copy
Range("C1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns("D:D").Select
Application.CutCopyMode = False
Selection.ClearContents
Range("C1").Select
End Sub
有没有办法让我可以自己应用这个功能。我想避免在空列中运行函数,然后将值复制到原始列。
我尝试VBA to fill formula down till last row in column以及加快公式。我有几个列可以做到这一点,并想知道是否可以只在C列上工作并修改空白而不需要额外的计算。
由于
答案 0 :(得分:5)
这不使用第二列并且执行C列中的所有值。它将值移动到数组,迭代数组并修剪多余的空间并用数组覆盖C中的值。
Sub macro1()
Dim rng As Variant
Dim ws As Worksheet
Dim i As Long
Set ws = Worksheets("Sheet1") 'Change to your sheet name.
With ws
rng = .Range("C1", .Cells(.Rows.Count, 3).End(xlUp)).Value
For i = LBound(rng) To UBound(rng)
rng(i, 1) = Application.Trim(rng(i, 1))
Next i
.Range("C1", .Cells(.Rows.Count, 3).End(xlUp)).Value = rng
End With
End Sub
答案 1 :(得分:0)
更改此类代码,因此您不能使用Select
。使用Select
和Selection
可以放慢速度。
Sub Macro1()
Range("D1").FormulaR1C1 = "=TRIM(RC[-1])"
Range("D1").AutoFill Destination:=Range("D1:D4")
Columns("D:D").Copy
Range("C1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Columns("D:D").ClearContents
End Sub