
Excel函數技巧:自定義函數連接文本
在實際工作中有很多情況需要統計某項目的不重復值,并把對應的數據合并在一起。本例介紹如何通過自定義函數的方法完成符合條件的文本連接/文本合并功能。
步驟說明:
首先,雙擊D2單元格,并輸入公式生成A列數據的不重復值:
=INDEX($A:$A,MATCH(,COUNTIF(D:D1,$A:$A),))
輸入完畢后,左手按住Ctrl和Shift,右手按下回車鍵,并下拉公式。
第二,按鍵盤上的Alt+F11進入VBE界面。
第三,選擇【插入】-【模塊】插入一個模塊。
第四,在右側空白處粘貼下列代碼并關閉VBE界面:
Option Explicit
Function ConTxt(ParamArray args() As Variant) As Variant
Dim tmptext As Variant, i As Variant, cellv As Variant
Dim cell As Range
tmptext = ""
For i = 0 To UBound(args)
If Not IsMissing(args(i)) Then
Select Case TypeName(args(i))
Case "Range"
For Each cell In args(i)
tmptext = tmptext & cell
Next cell
Case "Variant()"
For Each cellv In args(i)
tmptext = tmptext & cellv
Next cellv
Case Else
tmptext = tmptext & args(i)
End Select
End If
Next i
ConTxt = tmptext
End Function
第五,雙擊E2粘貼公式=ConTxt(IF($A$2:$A$8=D2,"/"&$B$2:$B$8,"")),同樣按Ctrl+Shift+Enter運行公式,并下拉。
為了美觀,將第一個斜杠去掉,將E2公式改成:
=MId(ConTxt(IF($A$2:$A$8=D2,"/"&$B$2:$B$8,"")),2,99)
數組方式運行,并下拉公式即完成了文本合并。
注意事項
如果是2007版工作簿,在保存時請選擇保存成【啟用宏的工作簿】格式。

