所以目前在B列中,有些单元格在它们之前没有空格,但也有单元格。
例如:单元格B1只是“市场:”但是单元格B4,B5,B6,B10,B14等会有“_____总:”(__表示空格)
在“Total:”之前我需要写什么来删除5个空格?
我目前有:
mos = Range("B:B")
For Each x In mos
xv = x.Value
If Left(xv, 1) = "" Then xv = Right(xv, Len(xv) - 1)
Next xv
这给了我一个错误。
请告诉我应该怎么做。
谢谢!
答案 0 :(得分:2)
Trim$
功能。 Trim
函数删除多余的尾随和前导空格。 Trim$
是一个类型化的函数,速度更快。 Intersect
表示只处理必要的行数而不是整个列B. Option Explicit
放在代码的顶部以强制变量声明并声明变量。并完全符合您正在使用的工作表。LTrim$
只是从左边(字符串的开头)和RTrim$
删除,只是为了从右边(字符串的结尾)删除。 代码:
Option Explicit
Public Sub test()
Dim mos As Range
Dim x As Range
With ActiveSheet 'change to appropriate worksheetname
Set mos = .Range("B:B")
For Each x In Intersect(mos, .UsedRange)
x = Trim$(x)
Next x
End With
End Sub
加成:
有很多现有的函数写入“清理”字符串,删除所有“额外”的空格字符,即只留下单个内部空格。
之一Public Function removeObsoleteWhiteSpace _
(FromString As Variant) As Variant
If IsNull(FromString) Then 'handle Null values
removeObsoleteWhiteSpace = Null
Exit Function
End If
Dim strTemp As String
strTemp = Replace(FromString, vbCr, " ")
strTemp = Replace(strTemp, vbLf, " ")
strTemp = Replace(strTemp, vbTab, " ")
strTemp = Replace(strTemp, vbVerticalTab, " ")
strTemp = Replace(strTemp, vbBack, " ")
strTemp = Replace(strTemp, vbNullChar, " ")
While InStr(strTemp, " ") > 0
strTemp = Replace(strTemp, " ", " ")
Wend
strTemp = Trim(strTemp)
removeObsoleteWhiteSpace = strTemp
End Function
示例电话:
Public Sub testing()
Debug.Print removeObsoleteWhiteSpace(" my string with a few spaces ")
End Sub
答案 1 :(得分:1)
抱歉,没有意识到你的循环只是为了删除空格。
这就是我修剪空间的方式:
Sub trim()
Dim mos As Range
Set mos = Range("B:B")
mos.Value = Application.trim(mos)
End Sub
答案 2 :(得分:1)
为避免循环,您可以使用:
With Range("B1", Cells(Rows.Count, 2).End(xlUp))
.Value = Evaluate("IF(" & .Address & "="""","""",TRIM(" & .Address & "))")
End With
也可以写成:
Replace()
或Range("B1", Cells(Rows.Count, 2).End(xlUp)).Replace what:=" ", replacement:="", lookat:=xlPart
方法:
LTrim()
当然所有上述解决方案都假设您在每个单元格内容的开头只有额外的空格,或者它们将 trim (前两个解决方案)或消除(第三个)解决方案)其他空间也
如果你真的需要消除前导空格(第一个非空白字符前面的空格)而保留所有其他空格,那么你必须循环并使用Dim cell As Range
For Each cell In Range("B1", Cells(Rows.Count, 2).End(xlUp))
cell.Value = LTrim(cell.Value)
Next
VBA函数:
array.find