业务场景:有两列内容,一列是款号,一列是该款的颜色,由于一款多色,所以同一款的颜色会分布在不同的单元格内 。现在需要将同一款的颜色用逗号分隔后合并在同一个单元格内 。
先介绍一下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所示:
【仿TEXTJOIN IF自制条件合并文本函数】
Function concatif(if_Range As Range, target As String, sum_Range As Range, boundary As String) As StringDim rg As RangeFor Each rg In if_RangeIf rg.Value = https://www.itzhengshu.com/excel/target ThenIf concatif = vbNullString Thenconcatif = sum_Range.Worksheet.Cells(rg.Row, sum_Range.Column)Elseconcatif = concatif & boundary & sum_Range.Worksheet.Cells(rg.Row, sum_Range.Column)End IfEnd IfNextEnd Function