计算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。
正如在其他答案中已经指出的,你不能真正使用TRIM
或SUBSTITUTE
作为单词之间的潜在空间,或者最终会给你错误的结果。
但是,这个公式将起作用:
=MATCH(TRUE,MID(A1,COLUMN($A$1:$J$1),1)<>" ",0)-1
你需要input一个数组公式,即按Ctrl – Shift – Enter而不是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))