我试图弄清楚是否有一种方法可以在Excel宏中运行一个简单的函数(TRIM去除重复的空格字符),因此它直接在单元格上执行,所以我不必使用TRIM前一列的函数创建一个额外的列。
它应该适用于选定列或仅选定的单元格
Sub trim()
ActiveCell.FormulaR1C1 = "=trim(R1C1)"
End Sub
答案 0 :(得分:9)
尝试一下:
Sub TrimAndFit()
Dim r As Range
With Application.WorksheetFunction
For Each r In Intersect(Selection, ActiveSheet.UsedRange)
r.Value = .Trim(r.Value)
Next r
End With
End Sub
这适用于所有选择 ed单元格。我们使用Intersect()
来提高效果。
答案 1 :(得分:4)
虽然存在本机VBA Trim function,但它只会从左端和右端移除空格。它也不会将单词之间的双重空格更改为单个空格。为此,您可以使用WorksheetFunction object和工作表的TRIM function。
Sub myTrim()
dim rng as range
for each rng in Selection
'use only one of these
rng = Trim(rng.Value)
rng = WorksheetFunction.Trim(rng.Value)
next rng
End Sub
有关How to avoid using Select in Excel VBA macros属性运行代码的更多样板,请参阅Application.Selection。
对于快速全列修剪,Range.TextToColumns method效果非常好。
Sub myTrim2()
Dim col As Range
For Each col In Selection.Columns
col.TextToColumns DataType:=xlFixedWidth, FieldInfo:=Array(0, 1)
Next col
End Sub
后一种方法不会删除内部双重空间;只有前导和尾随空格。
将程序和/ pr函数命名为与现有函数相同并不是一个好主意,除非您有意要覆盖该函数。
答案 2 :(得分:1)
尝试:
Private Sub Worksheet_Change(ByVal Target as Range)
Target.Value = Trim(Target.Value)
End Sub
这会将您在工作表中更改的任何单元格更改为单元格值的裁剪版本。
答案 3 :(得分:0)
只需尝试即时窗口
?Application.Trim("茶匙")
茶匙
茶叶?WorksheetFunction.Trim(" teas poon")
茶匙?修剪("茶勺")
答案 4 :(得分:0)
不会这样做吗?
Selection.Replace What:=" ", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
这会比相交慢吗?