今天热情的白云邀请《零基础玩会EXCEL-VBA》发布的qjdsj老师,向大家分享EXCEL内置函数无法解决的问题。
伙计,请看下面的截图。 左边是小组,名字。 我们想用EXCEL实现右边的效果。
先别往下看哦! 考虑两分钟,你平时接触的埃克塞尔函数能实现吗?
qjdsj老师与大家共享的是使用自定义函数JOINIF函数,按条件连接文本。
让我们一起学习处理字符串的自定义函数——JOINIF函数,首先来识别一下。
函数名称: JOINIF
角色:连接参数范围中满足指定条件的单元格的内容。
参数介绍:
第一参数:(必需)条件区域,根据条件计算的单元格区域。
第二个参数:(必需)用于确定连接的条件。
第三参数:(必须)要连接的实际单元格范围。
从以上介绍可以看出,虽然JOINIF函数和SUMIF函数非常相似,但在功能上从加法变成了连接文本。
看看下面的例子。 如下图所示,a、b是数据源,分别是组和名称,目标是组织为d、e列的格式。
解决方法:
一、创建自定义函数:
1、创建新的excel文档,只保留一个工作表,其余的删除。 按ALT F11打开VBE编辑器,创建新模块,将下面的自定义函数代码复制到模块中,然后关闭VBE编辑器。
功能joinif (RNG1as range,Str,Rng2 As Range )。
Dim Arr,Brr
dim I as龙
Dim j As Long
Dim MyStr As String
If Rng1.Rows.Count 65536 Then
ARR=RNG1.Resize(65536,Rng1.Columns ) ) ) ) ) ) ) )。
BRR=RNG2.Resize(65536,Rng1.Columns ) ) ) ) ) ) )。
Else
Arr=Rng1
Brr=Rng2
End If
forI=1toubound(arr ) ) ) ) ) )。
forj=1toubound(arr,2 ) ) ) ) ) ) ) ) ) ) )。
ifARR(I,j ) ' ' Then
ifarr(I,j )=Str Then
mystr=mystrBRR(I,j ) ','
End If
Else
Exit For
End If
Next j
下一步
joinif=left(mystr,len ) mystr(-1 ) ) ) ) ) ) ) )。
最终函数
2、点击【文件】【另存为】,选择“将宏加载到excel中”作为文件保存类型。 自动保存到ADDIN文件夹中。
3、检查使用此函数的excel文件的【开发工具】-【加载宏】中保存的宏文件名并确定。 可以在工作表中自由使用自定义的条件文本函数。
4、从使用效果来看,帅吗?