本帖最后由 香川群子 于 2012-3-5 12:34 編輯
我們可以使用&來連接不同單元格中的文字內(nèi)容,
但是,如果單元格較多時(shí),寫入=a1&b1&c1……本身就令人討厭。
下面自定義公式,解決了此問題,如果你需要經(jīng)常這樣處理數(shù)據(jù)的話。
第一可選參數(shù)InsWord,可以讓你方便的在不同單元格的內(nèi)容間插入間隔符號(hào),如空格,或“-”,“&”等,默認(rèn)為沒有。
第二可選參數(shù)SN,可以讓你決定各單元格取值的開始地方,默認(rèn)為1;
第二可選參數(shù)SN,可以讓你決定各單元格取值的長(zhǎng)度,默認(rèn)為原長(zhǎng)度;
Function CN(Rng As Range, Optional InsWord = '', Optional SN = 1, Optional LN = 0)
For i = 1 To Rng.Count
If LN = 0 Then
LNN = Len(Rng.Cells(i))
Else
LNN = LN
End If
CN = CN & InsWord & Mid(Rng.Cells(i), SN, LNN)
Next
CN = Right(CN, Len(CN) - Len(InsWord))
End Function
下面是函數(shù)功能進(jìn)化,增加了:
插入?yún)?shù)='arr'時(shí),可以自定生成VBA中直接可用的 arr = Array('a','b','c')的形式。即文本型數(shù)組。
插入?yún)?shù)='brr'時(shí),可以自定生成VBA中直接可用的 arr = Array(1,2,3)的形式。即數(shù)值型數(shù)組。
- Function CS(Rng As Range, Optional InsWd = '', Optional SN = 1, Optional LN = 0) As String
- If InsWd = 'arr' Then CS = 'arr = Array(''': InsWd = ''','''
- If InsWd = 'brr' Then CS = 'arr = Array(': InsWd = ','
- For i = 1 To Rng.Count
- s = s & IIf(s <> '' And Len(Rng.Cells(i)) >= SN, InsWd, '') & Mid(Rng.Cells(i), SN, IIf(LN = 0, Len(Rng.Cells(i)), LN))
- Next
- If CS = '' Then CS = s Else If InsWd = ',' Then CS = CS & s & ')' Else CS = CS & s & ''')'
- End Function