如何使用VBA从整个Excel列中删除空格?

Ale*_*lon 3 excel vba excel-vba

我正在尝试删除列中"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
Run Code Online (Sandbox Code Playgroud)

use*_*813 8

在您的特定情况下,问题是您将替换值存储在名为的字符串变量中result,然后对其执行任何操作.如果你想要它Cell,你必须在那里添加它,例如:

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

请记住,有一种Application.Trim方法可以在循环中节省一些时间.尝试使用以下代码:

Dim rng as Range

set rng = Range("A1:A10")
rng.Value = Application.Trim(rng)
Run Code Online (Sandbox Code Playgroud)


Ale*_* K. 8

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

result = Replace(Cells(i, "A"), " ", "")
Run Code Online (Sandbox Code Playgroud)

你应该:

Cells(i, "A") = Replace(Cells(i, "A"), " ", "")
Run Code Online (Sandbox Code Playgroud)

或更好

Cells(i, "A") = rtrim$(Cells(i, "A"))
Run Code Online (Sandbox Code Playgroud)

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

  • 是; 它是实际返回字符串的函数的版本,没有它你会得到一个不必要的变体 (4认同)