修剪前导和尾随空格,但仅在单词之间留出所有空格

时间:2015-10-16 15:44:11

标签: excel excel-formula

TRIM函数消除了字符串中的重复空格以及修剪前导和尾随空格。我需要修剪前导和尾随空格,但仅在字符串的中间留下重复的空格。

有没有办法在Excel公式中执行此操作?

2 个答案:

答案 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)

  • 提取修剪后的字符串