返回首页
当前位置: 主页 > Excel教程 > Excel VBA教程 >

按条件合并多个excel单元格内容到同一单元格的自定义函数

时间:2012-08-22 00:02来源:Office教程学习网 www.office68.com编辑:麦田守望者

Excel中的CONCATENATE函数可以将多个文本字符串联接成一个文本字符串,但有时需要按指定条件合并某些单元格的内容到一个单元格,这时CONCATENATE函数无法实现,而使用下面的自定义函数就十分方便了。如图所示,需要在F2单元格中将“调资额”为“190”的“姓名”用“、”连接起来。

CONCATENATEIF自定义函有条件地数连接多个单元格内容 

步骤如下:

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,"、")

即可得到所需的结果。

------分隔线----------------------------
标签(Tag):excel excel2007 excel2010 excel2003 excel技巧 excel教程 excel实例教程 excel2010技巧
------分隔线----------------------------
推荐内容
猜你感兴趣