如何从每个Excel单元格中删除前导空格?

时间:2013-02-28 13:24:12

标签: arrays excel vba excel-vba

假设以下Excel表格:

  | A
--+-----
1 |foo bar
2 |  bar baz
3 |   baz
4 | bam

我需要一种方法来自动删除所有前导空格:

  | A
--+-----
1 |foo bar
2 |bar baz
3 |baz
4 |bam

我无法找到Excel功能来执行此操作。任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:2)

使用=Trim(A1)从字符串的任意一侧删除whitespce。

要使用换行符替换剩余的空白字符,您可以使用=SUBSTITUTE(A1," ",[X]),其中[X]是其中之一:

  • Char(10) {换行}}
  • Char(13) {for a carriage return}
  • [type] Alt+Enter手动将换行符插入Excel单元格

帮助参考

TRIM(text) 删除文本中的所有空格,除了单词之间的单个空格。

SUBSTITUTE(text, old_text, new_text, [instance_num])在文本字符串中替换new_text old_text

答案 1 :(得分:2)

如果您希望单元格保存转换后的值以及单词之间的空格[return],请使用以下代码:

'DECLARE VARIABLES
Dim myRng As Range, c As Range

'INITIALIZE VARIABLES
Set myRng = Range("A1:A4")

'LOOP THRU RANGE
For Each c In myRng.Cells
    'TRIM LEADING AND TRAILING SPACES
    c.Value = LTrim(c.Value)
    c.Value = RTrim(c.Value)
Next c

'ADD RETURN SPACE
myRng.Replace What:=" ", Replacement:=Chr(10), LookAt:=xlPart

答案 2 :(得分:1)

使用下面的数组方法可以非常快速地完成此操作

虽然代码有效地可以在一个长行中运行,但为了清楚起见,我已将其分解。

这会将细胞更新到原始范围的右边。

Sub UpDateIt()
    Dim rng1 As Range
    Dim strText As String
    strText = ","
    Set rng1 = Range([a1], Cells(Rows.Count, "A").End(xlUp))
    With Application
        x = Replace(Replace(.Trim(Join(.Transpose(rng1), strText)), ", ", ","), Chr(32), Chr(10))
        rng1.Offset(0, 1) = .Transpose(Split(x, strText))
    End With
End Sub