2013-07-12 33 views
1

我从excel中导入一个表。其中一列看起来有一些空间。 因此,例如String为A = ABC/XYZ/RPW如何从字符串的右侧修剪空间?

现在我采用分体式

sSplit = Split(A, "/", -1, vbBinaryCompare) 

Inthis壳体SSPLIT(2),其是RPW在端部的空间,并且我不能够即使在修剪之后也要将其移除。

回答

1

如果Trim(sSplit(2))不消除尾随空格,有一个字符串看起来像一个空间,但实际上却是别的一个或多个字符结尾的机会。

使用Asc()函数来确定最右侧的字符的ASCII值。空格字符是ASCII 32.

Debug.Print Asc(Right(sSplit(2), 1)) 

还要验证的字符数。如果它大于4,则“rpw”后跟多个字符。

Debug.Print Len(sSplit(2)) 

在一个评论,您所报告的问题字符是一个换行符,ASCII 10.你可以用Replace()功能放弃所有行从字符串饲料,不只是当换行是最后一个字符。或者,如果字符串内可能有换行符,并且希望保留这些换行符,则可以使用Left(),字符串的长度减1,以仅放弃最后一个字符。

这里是一个即时窗口会话这可能使其更清晰。

' this variable is a proxy for the 3rd element of your array 
sSplit_2 = "rpw" & Chr(10) 
? Len(sSplit_2) 
4 
? ">" & sSplit_2 & "<" 
>rpw 
< 
' use Replace to discard every line feed from the string 
? ">" & Replace(sSplit_2, Chr(10), "") & "<" 
>rpw< 
' extract all but the last character of the string 
? ">" & Left(sSplit_2, Len(sSplit_2) -1) & "<" 
>rpw< 

如果它更方便,你可以你Split之前丢弃你“A”字符串结尾换行。

+0

是,长度为4,而不是3 ...但可以是一个解决办法......我找不到在Excel工作表中的任何空间要么..... – SAM244776

+0

正如我所说的,我越来越从数据excel工作表...现在,excel工作表有很多行,每个人都有不同的值,就像我刚才提到的那样...目前,我只面临只有一行的问题。所以,如果我只得到左分裂,那么可能会有其他词可能会更长,也会缩短....我希望你有我的问题....我正在寻找的解决方案是如何摆脱这些额外的空间或为什么他们在那里的原因 – SAM244776

+0

'Asc()'给你的尾随字符的ASCII值是什么? – HansUp