Excel中的CONCATENATE函數可以將多個文本字符串聯接成一個文本字符串,但有時需要按指定條件合并某些單元格的內容到一個單元格,這時CONCATENATE函數無法實現,而使用下面的自定義函數就十分方便了。如圖所示,需要在F2單元格中將“調資額”為“190”的“姓名”用“、”連接起來。
步驟如下:
1.按Alt+F11,打開VBA編輯器,單擊菜單“插入→模塊”,在代碼窗口中輸入下列代碼:
Function CONCATENATEIF(rng1 As Range, rng2 As Range, criteria As String, separator As String) As String
Dim arr()
Dim rCell As Range
Dim i As Integer, j As Integer
On Error Resume Next
j = WorksheetFunction.CountIf(rng2, criteria)
If j > 0 Then
ReDim arr(0 To j – 1)
For Each rCell In rng2
If WorksheetFunction.CountIf(rCell, criteria) Then
arr(i) = rng1.Item(1).Offset(rCell.Row – rng2.Row, rCell.Column – rng2.Column).Value
i = i + 1
End If
Next
For i = 0 To j – 1
CONCATENATEIF = CONCATENATEIF & arr(i) & IIf(i <> j – 1, separator, "")
Next
End If
End Function
上述代碼定義了一個自定義函數CONCATENATEIF,共有四個參數,分別為需要連接單元格內容的區域(通常為單行或單列)、條件區域,條件和分隔符。使用該自定義函數時注意:
①參數中的兩個區域的形狀大小需相同;
②條件的輸入類似COUNTIF函數,如 190、">100"、"蘋果" 等,可使用通配符“*”、“?”。
2.返回Excel工作表界面,在F2單元格中輸入公式:
=CONCATENATEIF($B$2:$B$16,$C$2:$C$16,E2,"、")
即可得到所需的結果。