2013-07-12 58 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