业务场景:有两列内容,一列是款号,一列是该款的颜色,由于一款多色,所以同一款的颜色会分布在不同的单元格内。现在需要将同一款的颜色用逗号分隔后合并在同一个单元格内。
先介绍一下TEXTJOIN函数,这是Excel2019的新增文本链接函数。该函数将多个区域和/或字符串的文本组合起来,并包括你在要组合的各文本值之间指定的分隔符。它的语法结构如下。
TEXTJOIN(分隔符, ignore_empty, text1, [text2], …)
TEXTJOIN函数也可以用于合并同类项的,比如TEXTJOIN+IF可以实现上面的业务要求。
但是2019以及更高级版本的Excel不是想有就能有的,我现在用的也还是2016版本。所以本篇要介绍的是VBA自定义函数concatif,语法结构是concatif(if_Range As Range, target As String, sum_Range As Range, boundary As String) 。
if_Range As Range:条件区域
target As String:需要匹配的目标字符
sum_Range As Range:需要合并的区域
boundary As String:分隔符号
函数的操作步骤和实现效果如下面的gif所示:
Function concatif(if_Range As Range, target As String, sum_Range As Range, boundary As String) As String
Dim rg As Range
For Each rg In if_Range
If rg.Value = target Then
If concatif = vbNullString Then
concatif = sum_Range.Worksheet.Cells(rg.Row, sum_Range.Column)
Else
concatif = concatif & boundary & sum_Range.Worksheet.Cells(rg.Row, sum_Range.Column)
End If
End If
Next
End Function