VBA快速合併字串方法

2021-10-12 16:39:39 字數 2351 閱讀 8174

在前幾天分享的文章【快速對比資料】中,使用了如下**,有小朋友問為什麼要再第20行**中使用trim函式呢?是否可以在構建字串時直接處理呢?本文將就講一下vba中快速連線字串的幾種方法。

我們使用乙個簡單的示例,提取1-10中的偶數並輸出結果,判斷偶數非常簡單,程式主框架如下。

sub demo(

)dim i as

integer

, msg as

string

for i =1to

10if

int(i /2)

=(i /2)

then

'構建字串msg

next

debug.print "偶數:" & msg

endsub

假設以空格分隔結果。

sub demo1(

)dim i as

integer

, msg as

string

for i =1to

10if

int(i /2)

=(i /2)

then

iflen

(msg)=0

then

msg =

cstr

(i)else

msg = msg &

" "&

cstr

(i)end

ifend

ifnext

debug.print "偶數:" & msg

endsub

【**解析】

第5行**判斷msg變數是否為空,如果為空則說明是第乙個偶數,那麼第6行**直接賦值,否則第8行**在msg變數之後追加空格和偶數。

sub demo2(

)dim i as

integer

, msg as

string

for i =1to

10if

int(i /2)

=(i /2)

then msg = msg &

" "&

cstr

(i)next

debug.print "偶數:" & trim(msg)

endsub

【**解析】

第4行**構建輸出結果時,不再對第乙個偶數做特殊處理,這樣產生的字串為" 2 4 6 8 10",第乙個數字之前會有乙個多餘的前導空格,幸運的是vba中提供了相應函式去除空格,第6行**中使用trim函式將可以實現完美輸出了,效果和方法1完全相同。

sub demo3(

)dim i as

integer

, msg as

string

for i =1to

10if

int(i /2)

=(i /2)

then msg = msg &

","&

cstr

(i)next

debug.print "偶數:" &

mid(msg,2)

endsub

【**解析】

與方法2相比,區別僅僅在於第6行**,使用mid函式去除第乙個字元(多餘的逗號),同樣簡潔。

sub demo4(

)dim i as

integer

, msg as

string

const str_deli = "||"

for i =1to

10if

int(i /2)

=(i /2)

then msg = msg & str_deli &

cstr

(i)next

debug.print "偶數:" &

mid(msg,

len(str_deli)+1

)end

sub

【**解析】

第3行**定義分隔符常量,用於模擬任意長度的分隔符(單個或多個字元)。

第7行**輸出時mid函式的第二個引數使用len函式獲取分隔符的長度,從其之後一位開始擷取字串,就可以得到正確的結果。

同乙個問題,解決方法有多種,條條大路通羅馬。

vba字串函式

trim string 去掉string左右兩端空白 ltrim string 去掉string左端空白 rtrim string 去掉string右端空白 len string 計算string長度 left string,x 取string左段x個字元組成的字串 right string,x 取...

VBA字串(十二)

字串是乙個字串行,可以由字母,數字,特殊字元或全部字元組成。如果乙個變數被包含在雙引號 中,則被認為是乙個字串。語法 variable name this is a string vb 簡單示例 str1 string only alphabets str2 132.45 only numbers ...

合併字串

給定兩個字串s1和s2,合併成乙個新的字串s。合併規則為,s1的第乙個字元為s的第乙個字元,將s2的最後乙個字元作為s的第二個字元 將s1的第二個字元作為s的第三個字元,將s2的倒數第二個字元作為s的第四個字元,以此類推。包含多組測試資料,每組測試資料報含兩行,代表長度相等的兩個字串s1和s2 僅由...