我一直在尝试创建一个宏来格式化从特定外部源复制的表的格式,问题是,某些单元格似乎从右到左填充,剩余空间在左边用空格填充:
" 1.12" - This is an example of said cell."
我正在寻找一种将单元格值转换为"1.12"
的解决方案。
我曾尝试在excel中使用Substitute和Trim函数,但这些方法不能解决我的问题,任何VBA建议或类似建议都将不胜感激!
谢谢!
答案 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结果的含义。