人气 4017

Excel分类合并 [复制链接]

精益人 2017-2-15 16:10:08
作者:阿航(Office中国 )
经常碰到有人想把相同的内容对应数据合并显示,说得有点绕,看下图就明白:
1487146949807405.png (22.35 KB, 下载次数: 0, 售价: 3 金钱)
右边的很不利于统计数据,只适合看。既然很多人问,就说说如用用自定义函数的方法实现。为什么不用公式呢?因为公式难度很多,Excel公式对处理文本合并的功能很弱。
Alt + F11,进入代码编辑界面。再新建一个模块,插入如下代码:PublicFunctionSLookUp(
lookup_valueAsString,
table_arrayAsRange,
col_index_numAsLong,
OptionaldelimiterAsString=","
)AsString
'单元格选区优化,避免选择整列之后,遍历过多无用的单元格 '
Dimrow_maxAsLong
row_max=Cells(65536,table_array.Columns(1).Column).End(xlUp).Row
DimarrAsVariant,iAsLong
arr=table_array.Resize(row_max-table_array.Row+1).Value
Fori=1ToUBound(arr)
'判断是否等于查找的值 '
Ifarr(i,1)=lookup_valueThen
'返回并组合对应列的值 '
SLookUp=SLookUp&delimiter&arr(i,col_index_num)
EndIf
Next
'去掉开头的分隔符 '
SLookUp=Mid(SLookUp,Len(delimiter)+1)
EndFunction对应的参数含义如下:lookup_value:  必填,要查找的值table_array:  必填,查找范围col_index_num: 必填,返回第几列的值delimiter:   选填,分隔字符
该自定义函数原理很简单。循环遍历单元格的值,只要碰到和条件相同的值,就找合并内容。其中为了避免使用自定义函数时,选中整列,导致遍历了很多无需遍历的单元格。其中加了优化选区的处理。用法和Vlookup差不多,或者说我把这个自定义函数设计得和Vlookup差不多。如下图:
1487146971569568.png (23.13 KB, 下载次数: 0, 售价: 1 金钱)
以E2单元格的公式为例,解析一下用法:第1个参数是D2,即查找D2的值;第2个参数是A:B,即在A:B列中查找;第3个参数是2,即合并A:B列中的第2列找到的值;第4个参数没填,则默认使用逗号分隔。
当然,你也可以把第4个参数写成你需要的分隔符:
1487146997394730.png (25.44 KB, 下载次数: 0, 售价: 6 金钱)
您需要登录后才可以回帖 登录 | 立即注册

QQ|手机版|精益人 ( 沪ICP备19004111号-1 )|网站地图

GMT+8, 2024-12-22 18:48 , Processed in 0.300216 second(s), 23 queries .

Powered by Lean.ren X3.5 Licensed  © 2001-2030 LEAN.REN