Excel:从单元格中删除空格

时间:2018-09-03 12:06:36

标签: excel vba excel-vba

我一直在尝试创建一个宏来格式化从特定外部源复制的表的格式,问题是,某些单元格似乎从右到左填充,剩余空间在左边用空格填充:

"              1.12" - This is an example of said cell."

我正在寻找一种将单元格值转换为"1.12"的解决方案。

我曾尝试在excel中使用Substitute和Trim函数,但这些方法不能解决我的问题,任何VBA建议或类似建议都将不胜感激!

谢谢!

4 个答案:

答案 0 :(得分:0)

使用Trim函数。

我知道您在您的问题中说过,它不起作用,但绝对应该

删除字符串的任何前导或结尾空格。 当然,您可以将Range.Value / Range.Value2的引用传递给它,而不是专门的"string2"


  

请记住,Trim引用了ByVal。其他   的话,它本身不会改变Range.Value。所以如果你是   愿意更改它,然后:

Range("A1").Value = Trim(Range("A1").Value) ' "1.12" - Etc..

将导致整个字符串的左右没有空格。如果您只想返回"1.12"(我发现您的问题有点不清楚,那么我们也需要同时使用InStr()Left()

此过程将遍历选定列中的所有单元格并将其更改为所需结果:

Private Sub toCategory(ByVal columnIndex as Long)

  Dim ws as Worksheet: Set ws = Sheets("Your Sheet Name") ' change me <-
  Dim lr as Long
  Dim cell as Range
  Dim searchrange as Range

  lr = ws.Cells(ws.Rows.Count, columnIndex).End(xlUp).Row
  Set searchrange = ws.Range(Cells(1, columnIndex), Cells(lr, columnIndex))

  For Each cell in searchrange
    cell.Value = Trim(cell.Value) ' could be done in one step, but for sake of readability
    cell.Value = Left(cell.Value, InStr(, cell.Value, " ") -1) ' returns "1.12"
  Next cell
End Sub

答案 1 :(得分:0)

如果您的数据位于单元格A1中,请在B1中尝试使用此公式

  

= TRIM(CLEAN(SUBSTITUTE(A1,CHAR(160),“”)))

答案 2 :(得分:0)

您可以以宏格式使用查找和替换,也可以手动使用它,具体取决于您执行该操作的频率。

使用替换时,突出显示空白处并进行复制,然后使用内置的excel替换功能(确保您在选项上展开并取消选择匹配整个单元格的内容),然后将“空白”粘贴到查找框,将替换框留空。

* CTRL + F将打开查找菜单,然后单击替换菜单选项卡。

答案 3 :(得分:0)

为了找出字符串中的真正含义,您可以使用类似的

Sub StringToAsc()

Dim s As String
Dim i As Long

    s = "Hello"
    s = "              1.12"

    For i = 1 To Len(s)
        Debug.Print Mid(s, i, 1), Asc(Mid(s, i, 1))
    Next i

End Sub

这应该给您一个线索,我们正在谈论什么“空白”。 Here,您可以看到ASC结果的含义。