【问题标题】:Excel VBA .Trim function changes . to ,Excel VBA .Trim 功能变化。到 ,
【发布时间】:2018-01-18 15:12:42
【问题描述】:

今天早些时候,我正在使用 .trim() vba 函数清理数据。虽然造成 .更改为 ,我不知道为什么。

Cells(rw, j).Value = Trim(Cells(rw, j).Value)

我所做的一切,它改变了如下值:

5.2 -> 5,2

有人可能会认为这是由于本地设置造成的,尽管同一列包含诸如 3(6.1) 之类的值,这些值并没有弄乱。

提前致谢

【问题讨论】:

  • 尝试使用Cells(rw, j).Value = Trim(Cells(rw, j))
  • 那个单元格的.NumberFormat 是什么?
  • 我敢打赌我的房子是本地环境。 3(6.1) 保留小数点的原因是,我很确定,这个值将被解释为字符串。
  • 不确定数字格式指的是什么,但是在加载时(也由脚本完成),它们都被完美地格式化了。使用 .trim 函数后,它们就搞砸了。我希望它们被解释为一个字符串,我只想删除尾随空格。

标签: excel vba trim


【解决方案1】:

转到文件 - 选项 - 高级并查找 使用系统分隔符。您希望小数点分隔符为 .和千位分隔符,

您也可以使用以下代码在 VBA 中更改这些:

 Application.DecimalSeparator = "." 
 Application.ThousandsSeparator = "," 
 Application.UseSystemSeparators = False

由于您不想更改这些设置,请将您的代码更改为:

Cells(rw, j).Value = "'" & Trim(Cells(rw, j).Text)

.Text 将为您提供单元格中内容的字符串版本,而不是尝试将其转换为数字(如果它看起来像数字)。

【讨论】:

  • 就是这样,我的小数点分隔符是逗号,虽然这一列需要解释为字符串。
  • 即使使用第二种解决方案,错误仍然存​​在。
  • 我在字符串前面连接了一个单引号,告诉 Excel 将其作为字符串处理。它适用于我的 Excel 版本。
  • Format$(Trim$(Cells(rw, j).Text), "@")
【解决方案2】:

如果您不想更改此应用程序的全局系统/excel 设置,您可以尝试将值强制为文本,例如:

With Cells(rw, j)
    .NumberFormat = "@"
    .Value = Trim(Cells(rw, j).Value)
End With

或者,根据您的评论:

With Cells(rw, j).Value = "'" & Trim(Cells(rw, j).Value)

【讨论】:

  • 将 NumberFormat 应用于整个列,没有运气。
  • 添加了另一个建议。
  • 还是没有运气。已经玩了 2 个小时了,这让我很紧张。
  • 我讨厌复制所考虑列的单元格内容的值,之后再次出现相同的错误。我最终使用了 NumberFormat。
【解决方案3】:

你可以试试这个:

Dim temp As String
temp = Cells(rw, j).Value
temp = Trim(temp)
Cells(rw, j).Value = temp

很遗憾,我无法测试它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-19
    • 2017-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-26
    • 2014-06-15
    • 2015-11-26
    相关资源
    最近更新 更多