2017-06-15 361 views
1

我试图从特定列中的单元格中删除所有空格。我发现这个问题,它有一个答案:How to remove spaces from an entire Excel column using VBA?删除单元格中的空格

这是我如何适应答案:

For i = 2 To n 
    Cells(i, 17).Value = Replace(Cells(i, 17).Value, " ", "") 
Next i 

它的确消除了空间,但它也消除了一个逗号。例如“424,426”变为“424426”。

我一次运行我的代码一部分,以确保问题确实发生在该特定的应付块。

我应该如何更改代码以确保只有空格被清除?

+1

很可能是因为单元格格式化了一个数字。尝试在运行宏之前更改“常规”**的格式。 –

+0

@ASH单元格被格式化为“一般,这会是一个问题吗? – Alluton

+0

将列的格式更改为”文本“而不是”常规“或使用我在以下文章中给出的方法 –

回答

3

我认为你正试图删除前导空间和尾随空间。为此你不需要循环。这里是一个班轮例如

Sub Sample() 
    [A1:A20] = [INDEX(TRIM(A1:A20),)] 
End Sub 

对于解释见This

enter image description here

编辑

要删除所有空格,更改您的代码

For i = 2 To n 
    If InStr(1, Cells(i, 17).Value, ",") Then 
     Cells(i, 17).Value = Replace("'" & Cells(i, 17).Value, " ", "") 
    Else 
     Cells(i, 17).Value = Replace(Cells(i, 17).Value, " ", "") 
    End If 
Next i 

或在进行替换之前将整列的格式更改为Text

enter image description here

+1

使用整个范围一次像这样肯定比单元循环要快得多 –

+0

但是使用Trim不会删除字符串中间的空格,这也是我所需要的(参见我提供的示例) – Alluton

+0

@Alluton:它会删除: )。在单元格A1中键入“aaaaaaa aaaaaa”,其中有两个单词之间有很多空格,然后尝试我的代码 –