Trim 函数和 WorksheetFunction.Trim 不删除前导或尾随空格
Trim function and WorksheetFunction.Trim do not remove leading or trailing spaces
我从工作表中的网站复制了一些数据,注意到一些单元格除了预期值外,还包含尾随 space。
我想删除这些 space,因为它们会给我的代码带来麻烦。我发现一个特定的单元格有这个 space 并尝试:
Worksheets(2).Range("D17").Value = Trim(Worksheets(2).Range("D17").Value)
- space 还在。
然后我尝试了:
Worksheets(2).Range("D17").Value = WorksheetFunction.Trim(Worksheets(2).Range("D17").Value)
- 仍然没有运气。
Replace
函数不仅去掉了前导和尾随,还去掉了字符串里面的space:
Worksheets(2).Range("D17").Value = Replace(Worksheets(2).Range("D17").Value," ","")
- 一些单元格包含两个词,所以这不是一个选项。
我可以检查最后一个字符是否为 space 并为每个单元格删除它,但这似乎不是一个优雅的解决方案,主要问题仍然存在:为什么 Trim
函数不工作?
在网上找了好久,才发现herespace还有一个字符,Chr(160)
的输出,不知为何Trim
函数忽略它。所以我的解决方案是 firstly 替换所有这些 'different' spaces 然后 trim 值:
Worksheets(2).Range("D17").Value = Replace(Worksheets(2).Range("D17").Value, Chr(160), " ")
Worksheets(2).Range("D17").Value = Trim(Worksheets(2).Range("D17").Value)
如果你遇到类似的问题,并且运行变成一个不同于-Chr(160)
'unknown'的字符,你可以找出这个字符是什么,通过隔离这个字符和使用 Asc
函数。
我从工作表中的网站复制了一些数据,注意到一些单元格除了预期值外,还包含尾随 space。
我想删除这些 space,因为它们会给我的代码带来麻烦。我发现一个特定的单元格有这个 space 并尝试:
Worksheets(2).Range("D17").Value = Trim(Worksheets(2).Range("D17").Value)
- space 还在。
然后我尝试了:
Worksheets(2).Range("D17").Value = WorksheetFunction.Trim(Worksheets(2).Range("D17").Value)
- 仍然没有运气。
Replace
函数不仅去掉了前导和尾随,还去掉了字符串里面的space:
Worksheets(2).Range("D17").Value = Replace(Worksheets(2).Range("D17").Value," ","")
- 一些单元格包含两个词,所以这不是一个选项。
我可以检查最后一个字符是否为 space 并为每个单元格删除它,但这似乎不是一个优雅的解决方案,主要问题仍然存在:为什么 Trim
函数不工作?
在网上找了好久,才发现herespace还有一个字符,Chr(160)
的输出,不知为何Trim
函数忽略它。所以我的解决方案是 firstly 替换所有这些 'different' spaces 然后 trim 值:
Worksheets(2).Range("D17").Value = Replace(Worksheets(2).Range("D17").Value, Chr(160), " ")
Worksheets(2).Range("D17").Value = Trim(Worksheets(2).Range("D17").Value)
如果你遇到类似的问题,并且运行变成一个不同于-Chr(160)
'unknown'的字符,你可以找出这个字符是什么,通过隔离这个字符和使用 Asc
函数。