Excel:从单元格中删除空格

问题描述 投票:0回答:4

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

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

我正在寻找的是将细胞价值转换为"1.12"的解决方案。

我曾尝试在excel中使用Substitute和Trim函数,但这些并没有解决我的问题,任何VBA建议或类似的将非常感激!

谢谢!

excel vba excel-vba
4个回答
0
投票

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

= TRIM(清除(替换(A1,CHAR(160),“”)))


0
投票

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

使用替换时,突出显示其中一个空格并复制它,然后使用内置的Excel替换功能(确保展开选项并取消选择匹配整个单元格内容),然后将“空白区域”粘贴到查找框中,将替换盒留空。

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


0
投票

使用Trim函数。

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

删除字符串的任何前导或尾随空格。您当然可以将Range.Value / Range.Value2的引用传递给它而不是a speicifc "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

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的结果意味着什么。

© www.soinside.com 2019 - 2024. All rights reserved.