Excel 使用“替换”仅替换字符串的一小部分
我从一个文本文件中读取数据,并尝试将其格式化以匹配单元格的定义名称。定义的名称是Excel 使用“替换”仅替换字符串的一小部分,excel,vba,Excel,Vba,我从一个文本文件中读取数据,并尝试将其格式化以匹配单元格的定义名称。定义的名称是89NL\u 10ETH\u A,字符串是89NL 10ETH A,但后面有一堆空格。我使用Replace()将空格转换为“\ux”,但末尾的所有空格都转换为下划线。请注意,trim()由于固定长度而无法工作,我如何将空格修剪成固定长度 我现在就是这样做的 getProduct = Replace(Replace(Mid(Ln, 40, 24), "#", ""), "%", "") 这样做很好: Sub Test
89NL\u 10ETH\u A
,字符串是89NL 10ETH A
,但后面有一堆空格。我使用Replace()
将空格转换为“\ux”,但末尾的所有空格都转换为下划线。请注意,trim()
由于固定长度而无法工作,我如何将空格修剪成固定长度
我现在就是这样做的
getProduct = Replace(Replace(Mid(Ln, 40, 24), "#", ""), "%", "")
这样做很好:
Sub Test()
Dim STR As String, arrSTR
STR = "89NL 10ETH A "
arrSTR = Split(Application.Trim(STR), " ")
MsgBox Join(arrSTR, "_")
End Sub
在您更换之前,只需进行
修剪
:
Sub TrimTest()
Dim InputString As String
InputString = " 89NL 10ETH A "
Debug.Print Replace$(Trim$(InputString), " ", "_")
End Sub
Trim
删除开头和结尾“89NL 10ETH A”中的空格“89NL 10ETH A”
,因此中间的空格可以替换为下划线“89NL 10ETH A”
,如@AndyG所述,您可以将Replace()与Trim()一起使用
您可以将其与文本字符串一起使用
getProduct = Replace(Trim("89NL 10ETH A "), " ", "_")
MsgBox getProduct
或者,使用单元格值
getProduct = Replace(Trim(Range("A1").Value), " ", "_")
MsgBox getProduct
Application.Trim
我相信对VBA有效。在修剪之后,您可以使用Split(STR,“”)
并最终使用Join(arrSTR,“)
Trim()
工作,而不是使用replace。在替换剩余空间之前,先使用它。我知道我做错了什么。我的Mid
长度太长了,它从下一个专栏中选取了一个我看不到的句点,为什么我的Trim
看起来不起作用。为什么只需要替换就可以拆分和合并呢?我想替换是一个工作表函数,所以这样做更快?@Damian好吧,这就是(根据您指定的字符数,将文本字符串的一部分替换为不同的文本字符串。)和(返回一个字符串,其中指定的子字符串已替换为另一个子字符串),但如果您仔细比较文档,它们会做完全不同的事情。如果不进行调查,我将不知道。@Pᴇʜ我已经检查过了,是的……工作表函数适用于单元格,替换函数适用于单个字符串。我今天学到了一些东西,也有RTrim,但差别可能很小。@AndyG是的,但只是为了防止OP需要同时修剪这两个。我只在极少数情况下使用LTrim
或RTrim
不应该删除左空格或右空格。这是正确的。这是我已经准备好的,但是中间的长度太长了,我拾取了一个我没有看到的周期,这给人一种错觉,Trim()
不起作用。