Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Excel中计算字符串前的空格数_Excel - Fatal编程技术网

在Excel中计算字符串前的空格数

在Excel中计算字符串前的空格数,excel,Excel,导出到Excel的程序会在一列中创建一个缩进列表的文件,如下所示: Column A First Text Second Text Third Text Fourth Text Fifth Text 如何在excel中创建一个函数来计算文本字符串前的空格数 因此,在本例中,返回:1表示第一个文本行,3表示第二个文本行,以此类推 最好寻求非VBA解决方案 您可以在Ms Excel中尝试此功能: =LEN(A1)-LEN(SUBSTITUTE(A1," ","")) 如果结果是

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

Column A
 First Text
  Second Text
   Third Text
  Fourth Text
 Fifth Text
如何在excel中创建一个函数来计算文本字符串前的空格数

因此,在本例中,返回:1表示第一个文本行,3表示第二个文本行,以此类推


最好寻求非VBA解决方案

您可以在Ms Excel中尝试此功能:

=LEN(A1)-LEN(SUBSTITUTE(A1," ",""))
如果结果是在一个单个单元格中,则此项适用。如果是整行/整列,只需相应地拖动公式。

根据,您可以尝试:

=LEN(Cell)-LEN(SUBSTITUTE(Cell," ","")) 
其中单元格是您的目标单元格(即A1、B1、D3等)

我的例子是:

B8: =LEN(F8)-LEN(SUBSTITUTE(F8," ",""))

F8: [ this is a test    ]

produces 4 in B8.

上述方法将计算插入字符串(如果有)之前、单个单词之间以及插入字符串(如果有)之后的空格数。它不会计算没有实际空白字符的可用空间。因此,如果我在上面的示例中测试后插入两个空格,则总计数将提高到6。

TRIM
在这里没有帮助,因为它还删除了单词之间的两个空格

其主要思想是找到修剪字符串中的第一个字母,并找到其在原始字符串中的位置:

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

正如在其他答案中指出的那样,你不能真正使用
TRIM
SUBSTITUTE
作为单词之间或结尾处的潜在空格,否则会产生错误的结果

然而,这一公式将起作用:

=MATCH(TRUE,MID(A1,COLUMN($A$1:$J$1),1)<>" ",0)-1
=匹配(TRUE,MID(A1,列($A$1:$J$1),1)”,0)-1
您需要将其作为数组公式输入,即按Ctrl-Shift-enter键而不是enter键

如果您需要超过10个空格,请将
$J
替换为字母表中较低的一列字母

试试下面的方法:

=FIND(“,A1,1)-1


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

以下是我的解决方案。如果左边的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))

如果缩进,您可以创建如下个人函数:

Function IndentLevel(Cell As Range)
'This function returns the indentation of a cell content
Application.Volatile
'With "Application.Volatile" you can make sure, that the function will be 
 recalculated once the worksheet is recalculated
'for example, when you press F9 (Windows) or press enter in a cell
IndentLevel = Cell.IndentLevel
'Return the IndentLevel
End Function
这仅在缩进时有效,您可以在单元格格式->对齐中看到此属性

在此之后,您可以看到缩进级别


每个文本字符串后面是否有空格?单词之间的空格和字符串末尾可能的空格如何?@valex这会计算第一个字符串之前和所有字符串之间的空格。除非使用空格键插入空格,否则它不会计算空格数(如中所示,它不会计算最后一个字符和单元格右边缘之间的剩余空格,因为没有实际字符)。AME要求“字符串前的空格数”。您的示例应该在“this”之前产生
1
空格,而不是
4
,不幸的是,这也会消除单词之间的空格。@Bathsheba,这是一个正确的观点。但是,考虑到目标是找到空格的数量,我觉得只要生成的单元格位于不同的行/列中,就不会影响手头的数据。但它不会也计算单词之间或尾随之间的空格吗?@Noobacode Sure。我总是测试我在这里发布的答案。哦,那太好了!做得好。请注意,某些Excel区域使用
代替
@valex对不起,芭丝谢芭是对的,我需要使用
。干得好,先生--这是一个绝妙的解决方案。当除了我们试图计算的初始空间之外还有其他空间时,它不起作用:)太乱了,因此当有6个初始空间时,它就不起作用了。上面@valex的优雅解决方案简洁优雅,因此它甚至适用于219个初始空间:)需要ltrim而不仅仅是修剪以避免计算尾部空间