如何删除实际字符串前后的一个或多个空格。字符串之间的空格必须留在原处。空格数(前导/尾随/中间)有所不同。
示例:
"1234 456abc "
" 1234 456bac "
" 1234 456cab "
结果应为:
"1234 456abc"
"1234 456bac"
"1234 456cab"
答案 0 :(得分:2)
如果要保留所有中间空格,最简单的方法是使用简短的用户定义函数。
Function vbaTRIM(S As String) As String
vbaTRIM = Trim(S)
End Function
如果不能使用VBA,则可以使用此相当复杂的数组函数:
=MID(A1,MATCH(TRUE,(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)<>CHAR(32)),0),
LOOKUP(2,1/(MID(A1&" ",ROW(INDIRECT("1:"&LEN(A1)+1)),1)<>CHAR(32)),
ROW(INDIRECT("1:"&LEN(A1)+1)))-MATCH(TRUE,(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)<>CHAR(32)),0)+1)
要输入/确认数组公式,请在按下 enter 的同时按住 ctrl + shift 。如果正确执行此操作,Excel会在公式栏中显示的公式周围放置括号{...}
。
此功能有两个主要部分:
查找第一个非空格
=MATCH(TRUE,(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)<>CHAR(32)),0)
查找最后一个非空格
=LOOKUP(2,1/(MID(A1&" ",ROW(INDIRECT("1:"&LEN(A1)+1)),1)<>CHAR(32)),ROW(INDIRECT("1:"&LEN(A1)+1)))
然后,只返回从开头和结尾去除的空格:
=mid(a1,firstNonSpace,lastNonSpace-firstNonSpace+1)
如果您将公式的这些部分输入到某个单元格中,并使用公式评估工具,则应该能够弄清楚它们的工作原理。
编辑
如果您使用FILTERXML
函数的较新版本的Excel,可以尝试:
=FILTERXML("<s>" & A1 & "</s>", "//s")
答案 1 :(得分:0)
VBA应该是最简单的,如果您想要公式,请尝试
= MID(A1,FIND(LEFT(TRIM(A1),1),A1),(LEN(A1)-MATCH(RIGHT(TRIM(A1),1),INDEX(MID(A1,LEN(A1) )-ROW(INDIRECT(“ 1:”&LEN(A1)))+ 1,1),0),0)-FIND(LEFT(TRIM(A1),1),A1)+2))
答案 2 :(得分:0)
如果要删除适当的前导/后缀空格,请选择要更改的值的列,然后运行此子过程。
Sub removeLeadingTrailingSpaces()
With Selection
.TextToColumns Destination:=.Cells(1), DataType:=xlFixedWidth, _
FieldInfo:=Array(0, 2)
End With
End Sub