VBA TRIMfunction等同于Excel和工作表function

我知道TRIM函数作为工作表函数和VBA函数返回不同的结果:

  • 工作表函数删除文本string之间的单个空格之外的所有空格
  • 而VBA函数仅删除前导和尾随空格。

有没有一种方法来模拟与工作表函数的VBA行为,没有一个自定义的VBA函数?

只使用工作表函数,您可以在A1中为文本string尝试:

=REPLACE(LEFT(A1,MATCH(2,1/(MID(A1,MMULT(ROW(INDIRECT("1:"&LEN(A1))),1),1)<>" "))),1,FIND(LEFT(TRIM(A1)),A1)-1,"") 

由于缺lessstring反转工作表函数,查找不是空格的最后一个字符的位置并不简单。

如果您不想使用VBA,则使用“ 数据”|“文本到列 ”选项可以更简单:

  1. 固定宽度
  2. 没有断线
  3. 目的地:B1

这也消除了前导和尾随空间。

工作表函数删除文本string之间的单个空格之外的所有空格

不,这不完全正确:)工作表TRIMfunction不会删除不间断的空格字符( &nbsp; )。 要删除不间断的空格字符,您有一个不同的函数称为CLEAN()

如果你想在VBA中使用Worksheet Function Trim ,那么你可以像这样使用它

 Application.WorksheetFunction.Trim(Range("A1").Value) 

在Excel工作表中,您可以使用=TRIM()

您可以在VBA中编写一个可以在工作表中引用的函数。

例如:

 Public Function MyTrim(text As String) As String MyTrim = Trim(text) End Function 

然后在工作表中,假设您要修剪的文本位于单元格A1中:

 =MyTrim(A1)