TRIM函数消除了字符串中的重复空格以及修剪前导和尾随空格。我需要修剪前导和尾随空格,但仅在字符串的中间留下重复的空格。
有没有办法在Excel公式中执行此操作?
答案 0 :(得分:2)
不确定是否只使用公式轻松完成。 这个VBA将完成这项工作:
Public Function TRIMLR(Target As Range) As Variant
TRIMLR = Trim(Target.Value)
End Function
正如pnuts在评论中所说 - 这将完成工作:
{{1}}
现在已经在这个网站上找到了几个公式,只需要弄清楚如何结合这两个公式:
http://eforexcel.com/wp/article-18-ltrim-and-rtrim-through-excel-formulas/
LTRIM:
的 = REPLACE(A1,1,FIND(LEFT(TRIM(A1),1),A1)-1"&#34)强>
RTRIM:
= IFERROR(REPLACE(A1,MAX(INDEX((MID(A1,ROW(A1:INDEX(A:A,LEN(A1))),1)&lt;&gt;&#34;&#34; )* ROW(A1:INDEX(A:A,LEN(A1))),,))+ 1,LEN(A1),&#34;&#34;),&#34;&#34)< /强>
答案 1 :(得分:1)
仅在昨天发现Excel的TRIM消除了字符串中的连续空格。出于纯粹的烦恼,我想出了一种仅使用工作表函数实现标准trim()的方法(在this回答的帮助下)。但它并不漂亮:
=MID(A1,FIND(LEFT(TRIM(A1),1),A1),FIND("@",SUBSTITUTE(A1,RIGHT(TRIM(A1),1),"@",LEN(A1)-LEN(SUBSTITUTE(A1,RIGHT(TRIM(A1),1),""))))-FIND(LEFT(TRIM(A1),1),A1)+1)
(如果你的文字恰好包含@,那么在公式中使用不同的异常字符)
说明:
LEFT(TRIM(A1),1)
给出了第一个非空白字符,因此FIND(LEFT(TRIM(A1),1),A1)
在原始字符串中给出了此位置根据链接的答案,这将找到字符串中的最后一个\。 =FIND("@",SUBSTITUTE(A1,"\","@",LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))))
在论坛栏中用RIGHT(TRIM(A1, 1))
替换\,您会在原始字符串中找到最后一个非空格字符的位置,即FIND("@",SUBSTITUTE(A1,RIGHT(TRIM(A1),1),"@",LEN(A1)-LEN(SUBSTITUTE(A1,RIGHT(TRIM(A1),1),""))))
现在我们有第一个和最后一个非空白位置,我们可以用MID(A1, first, last-first+1)