0

假设以下 Excel 工作表:

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

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

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

我找不到执行此操作的 Excel 函数。谁能帮我吗?

4

3 回答 3

2

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

要将剩余的空白字符替换为换行符,您可以使用=SUBSTITUTE(A1," ",[X])where [X]is the one:

  • Char(10){换行}
  • Char(13){用于回车}
  • [type]Alt+Enter在 Excel 单元格中手动插入换行符

帮助参考

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

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

于 2013-02-28T13:37:51.470 回答
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
于 2013-02-28T14:22:42.543 回答
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
于 2013-03-02T03:53:15.267 回答