仿TEXTJOIN+IF自制条件合并文本函数

业务场景:有两列内容,一列是款号,一列是该款的颜色,由于一款多色,所以同一款的颜色会分布在不同的单元格内 。现在需要将同一款的颜色用逗号分隔后合并在同一个单元格内 。


先介绍一下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自制条件合并文本函数



【仿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

相关经验推荐