计算Excel中string之前的空格数

导出到Excel的程序会在单个列中创build一个带有缩进列表的文件,如下所示:

Column A First Text Second Text Third Text Fourth Text Fifth Text 

如何在Excel中创build一个函数来计算文本string之前的空格的数量?

所以在这个例子中返回:第一行文本为1,第三行为第三行。

最好寻求一个非VBA解决scheme。

TRIM在这里没有帮助,因为它消除了单词之间的双重空格。

主要想法是find修剪的string中的第一个字母,并find它在原始string中的位置:

 =FIND(LEFT(TRIM(A1),1),A1)-1 

试试下面:

=FIND(" ",A1,1)-1

它计算单元格中第一个find的空白字符的位置,并将其减less1以反映该位置之前的字符数。

你可以在Ms Excel本身中尝试这个function:

 =LEN(A1)-LEN(SUBSTITUTE(A1," ","")) 

如果结果在单个单元格中,这将适用。 如果是整行/列,只需拖动公式即可。

根据http://www.mrexcel.com/forum/excel-questions/61485-counting-spaces.html ,您可以尝试:

 =LEN(Cell)-LEN(SUBSTITUTE(Cell," ","")) 

细胞是你的目标细胞(即A1,B1,D3等)。

我的例子:

 B8: =LEN(F8)-LEN(SUBSTITUTE(F8," ","")) F8: [ this is a test ] produces 4 in B8. 

上面的方法会计算string之前的空格,如果插入任何内容,单个单词之间和string之后(如果有)。 它不会计算没有实际空白字符的可用空间。 所以,如果我在上面的例子中testing后插入了两个空格,那么总数将会被提升到6。

正如在其他答案中已经指出的,你不能真正使用TRIMSUBSTITUTE作为单词之间的潜在空间,或者最终会给你错误的结果。

但是,这个公式将起作用:

 =MATCH(TRUE,MID(A1,COLUMN($A$1:$J$1),1)<>" ",0)-1 

你需要input一个数组公式,即按CtrlShiftEnter而不是Enter

如果您期望超过10个空格,请用字母中的下一个字母replace$J

这是我的解决scheme。 如果左5个字符等于“_____”(5个空格),则返回5,否则查找4个空格,依此类推。

 =IF(LEFT(B1,5)=" ",5,IF(LEFT(B1,4)=" ",4,IF(LEFT(B1,3)=" ",3,IF(LEFT(B1,2)=" ",2,1)))) 

你几乎用LEN + TRIM得到答案之前,你只需要把两者结合起来:

 =LEN(Cell)-LEN(TRIM(Cell))