在excel中,TRIM()
将删除文本前后的所有空格,同时还删除单词之间的任何重复空格。
是否有一个公式或其组合与TRIM()
相同但在字之间保留空格?
在下面的例子中,我正在寻找能够实现虚构公式的公式" WXYZ":
TRIM(" Omicron Persei 8 ")
= "Omicron Persei 8"
WXYZ(" Omicron Persei 8 ")
= "Omicron Persei 8"
请注意,我已经读过某个地方,VBA中的TRIM()
将像上面的WXYZ一样工作。但是,我正在寻找配方解决方案。
答案 0 :(得分:4)
我相信这应该有效(假设你的字符串位于A1):
=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)
FIND(LEFT(TRIM(A1),1),A1)
返回字符串
MATCH(RIGHT(TRIM(A1),1),INDEX(MID(A1,LEN(A1)-ROW(INDIRECT("1:"&LEN(A1)))+1,1),0),0)
返回字符串中从右到左的最后一个非空格字符的位置。
答案 1 :(得分:1)
也可以使用公式数组。
假设字符串位于A1
,请在B2
中输入此公式数组。强烈建议确保公式ROW(B:B)
的这一部分始终指向公式所在的同一列(在本例中为B
列),这是为了避免公式返回错误,如果它所引用的列将被删除。
=MID($A1,
FIND(LEFT(TRIM($A1),1),$A1),
1+MAX(ROW(B:B)*(ROW(B:B)<=LEN($A1))*(MID($A1,ROW(B:B),1)<>" "))
-FIND(LEFT(TRIM($A1),1),$A1))
同时按 [Ctrl]
+ [Shift]
+ [Enter]
输入FormulaArrays,如果输入正确,您将在公式周围看到 {
和 }
关于@Aakash提供的公式,我建议替换此部分中的INDIRECT
函数:
-ROW(INDIRECT("1:"&LEN($A7)))
用这个:
-ROW(B:B)
因此公式将变为非易失性:
=MID($A1,
FIND(LEFT(TRIM($A1),1),$A1),
(LEN($A1)-MATCH(RIGHT(TRIM($A1),1),INDEX(MID($A1,LEN($A1)-ROW(B:B)+1,1),0),0)
-FIND(LEFT(TRIM($A1),1),$A1)+2))