【问题标题】:Remove Leading and Trailing Whitespace from Excel Cells从 Excel 单元格中删除前导和尾随空格
【发布时间】:2016-10-14 02:50:00
【问题描述】:

我有一个 Excel 电子表格,其中包含多个具有前导或尾随空格(包括空格、不间断空格、回车和换行)的单元格。我想删除这些空格。我的谷歌搜索表明这只能用 VBA 完成。 VBA Trim 函数不会删除所有类型的空格,也可能会从单元格的中间删除。 VBA 的 Trim 函数的 MSDN 页面引用了 .NET 的 String.Trim 方法,这正是我想要的。但是,我不确定如何按照第一个链接的建议从 VBA 调用 String.Trim。如何从 Excel VBA 调用 String.Trim 方法?

编辑:澄清一下,我想在单元格中间保留空格(包括回车和换行符)。我只想删除单元格开头和结尾的字符。

【问题讨论】:

  • Cells(1, 1) = Trim(" test test test ") 有效...但是啊哈,您还需要回车和换行符...我不认为 trim 在VBA。因此,您只需对 chr(10) 和 chr(13) 使用 replace 命令,例如 Cells(1, 1) = Replace(Replace(Trim(" test " + Chr(10) + Chr(13) + " test test "), Chr(10), ""), Chr(13), "")
  • 另外,请参阅stackoverflow.com/questions/2964769/… 了解如何删除所有非打印字符,或support.office.com/en-us/article/… 了解微软对此的看法,(请参阅 CLEAN 工作表功能)
  • 尝试添加“Microsoft VBScript 正则表达式 5.5”参考并使用 RegEx 清理您的文本。 ?

标签: .net excel vba trim


【解决方案1】:

如果您想在 Excel 中执行此操作而无需通过 VBA 使用:

=TRIM(CLEAN(A1))

假设您要清洁单元格 A1。根据我的测试,这会删除所有制表符、回车和换行符,但也会将多个空格转换为单个空格,因此它可能不是您想要的。

【讨论】:

  • 感谢您的意见。但是,我不想删除 all 回车和换行。我只想从单元格的开头和结尾删除回车和换行。
  • 如果原始数据是一致的,那么您可以构建一系列嵌套的 if 语句,或者分阶段清理它。对于更复杂的情况,您最好在将数据导入 Excel 之前对其进行清理。你能发布一些样本吗?
  • 数据最初是在 Excel 中输入的。大多数单元格包含几个由回车和/或换行分隔的段落。我的问题是在 Excel 中键入信息的人经常在文本段落之前或文本段落之后放置空格。我想要的功能正是 .NET 的 String.Trim 方法所做的。
【解决方案2】:

我遇到了同样的问题,但我发现此代码及其完美运行。它从列名中删除前导和尾随空格。

foreach (DataColumn c in d.Columns)
                c.ColumnName = c.ColumnName.Trim();

干杯

【讨论】:

    【解决方案3】:

    希望您的问题现在得到解决。我仍然会为那些可能仍然需要它的人提供我的答案。我也这样做了,只是在经过广泛的研究后才发现这一点,因为大多数答案都使用了我通常不惜一切代价避免的循环;至少是显式循环!

    所以,对我来说,这些简单的代码行就像一个魅力:

    Dim Rng As Range
    Set Rng = Range("A1").CurrentRegion 'Select the Range based on your criteria, preferably smaller
    Rng.Value = Application.Trim(Rng)
    

    希望对你有帮助:)

    【讨论】:

      猜你喜欢
      • 2018-10-04
      • 2020-08-20
      • 1970-01-01
      • 1970-01-01
      • 2012-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多