ale*_*lex 0 excel vba excel-vba
我有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
Run Code Online (Sandbox Code Playgroud)
有没有办法可以自己应用这个功能.我想避免在空列中运行函数,然后将值复制到原始列.
我尝试了VBA将公式填写到列的最后一行,以及加快公式.我有几个列可以做到这一点,并想知道是否可以只在C列上工作并修剪空格而不需要额外的计算.
谢谢
这不使用第二列并执行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
Run Code Online (Sandbox Code Playgroud)