优秀的编程知识分享平台

网站首页 > 技术文章 正文

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

nanyue 2024-07-20 23:36:32 技术文章 7 ℃

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


先介绍一下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
最近发表
标签列表