【问题标题】:How to remove spaces from an entire Excel column using VBA?如何使用 VBA 从整个 Excel 列中删除空格?
【发布时间】:2020-10-01 04:07:09
【问题描述】:

我正在尝试删除“A”列的每个字段中的空格,这些空格位于字符串的末尾,其中一些字符串有 3 个空格,其他 4. 当我运行代码时,我不'没有错误,所以我认为我有一个错误,因为运行时没有发生任何事情。

Dim result As String
Last = Cells(Rows.Count, "A").End(xlUp).Row
    For i = Last To 1 Step -1
      If (Right(Cells(i, "A").Value, 4)) Like "    " Or (Right(Cells(i, "A").Value, 3)) Like "   " Then
        result = Replace(Cells(i, "A"), " ", "")
    End If
Next i

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    在您的特定情况下,问题是您将替换值存储在名为result 的字符串变量中,然后什么也不做。如果您希望它在Cell 中,则必须将其添加回那里,例如:

    Cells(I, "A").Value = result

    请记住,有一个Application.Trim 方法实际上可以节省一些循环时间。尝试以下代码:

    Dim rng as Range
    
    set rng = Range("A1:A10")
    rng.Value = Application.Trim(rng)
    

    【讨论】:

    • Trimming 范围不起作用。您必须逐个单元格地修剪
    • @iDevlop 试试看。使用 Application.Trim(与 WorksheetFunction 相对或仅使用 Trim)可以修剪范围。
    • 好吧。在发布之前,我确实尝试并遇到了错误。但现在我意识到这是因为我复制了您在第 3 行有错误的代码:)" 而不是")。因此,请编辑您的代码,以便我可以将反对票更改为赞成票;-)
    • @iDevlop 哎呀,感谢您的提醒!我偶尔会直接在网站中输入代码响应(无需测试)以获得更简单的代码块,但我错过了。
    • 这是一个非常有用的 VBA。谢谢。
    【解决方案2】:

    目前您实际上并没有更新循环中的单元格,您只是;

    result = Replace(Cells(i, "A"), " ", "")
    

    你应该:

    Cells(i, "A") = Replace(Cells(i, "A"), " ", "")
    

    或者更好

    Cells(i, "A") = rtrim$(Cells(i, "A"))
    

    这将删除所有正确的空格。您也可以删除 if 检查。

    【讨论】:

    • 最后的$是真的 old school!它有附加值吗?
    • 是的;它是实际返回字符串的函数版本,没有它你会得到一个不必要的变体
    【解决方案3】:

    希望这段代码做什么?目前正在将这些值读入结果。最好使用 trim 去除尾随空格。

    Dim result As String
    Last = Cells(Rows.Count, "A").End(xlUp).Row
        For i = Last To 1 Step -1
            result = RTrim(Cells(i, "A"))
        Next i
    

    【讨论】:

    • 感谢大家的快速回复
    猜你喜欢
    • 2017-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-10
    • 1970-01-01
    • 1970-01-01
    • 2012-03-20
    相关资源
    最近更新 更多