Excel交流网
  • 设为首页|收藏本站|手机版
  • Excel-教程-技巧-培训视频

  • 网站首页
  • Excel教程
  • 新闻动态
  • Excel资源
  • 关于我们

Excel教程

Excel操作
Excel函数
Excel图表
Excel VBA
Excel 行业应用

联系方式

Excel中交流网 联系方式

QQ:18449932 


网  址:www.excel-cn.com  

当前位置:网站首页 > Excel教程 > Excel VBA
Excel VBA

Excel分类合并


作者:阿航(Office中国 )


经常碰到有人想把相同的内容对应数据合并显示,说得有点绕,看下图就明白:

一对多1.png

右边的很不利于统计数据,只适合看。既然很多人问,就说说如用用自定义函数的方法实现。

为什么不用公式呢?因为公式难度很多,Excel公式对处理文本合并的功能很弱。


Alt + F11,进入代码编辑界面。再新建一个模块,插入如下代码:

Public Function SLookUp(
    lookup_value As String, 
    table_array As Range, 
    col_index_num As Long, 
    Optional delimiter As String = ","
    ) As String
    
    '单元格选区优化,避免选择整列之后,遍历过多无用的单元格'
    Dim row_max As Long
    row_max = Cells(65536, table_array.Columns(1).Column).End(xlUp).Row
    
    Dim arr As Variant, i As Long
    arr = table_array.Resize(row_max - table_array.Row + 1).Value
 
    For i = 1 To UBound(arr)
        '判断是否等于查找的值'
        If arr(i, 1) = lookup_value Then
            '返回并组合对应列的值'
            SLookUp = SLookUp & delimiter & arr(i, col_index_num)
        End If
    Next
    
    '去掉开头的分隔符'
    SLookUp = Mid(SLookUp, Len(delimiter) + 1)
End Function

对应的参数含义如下:

lookup_value:   必填,要查找的值

table_array:    必填,查找范围

col_index_num:  必填,返回第几列的值

delimiter:      选填,分隔字符


该自定义函数原理很简单。循环遍历单元格的值,只要碰到和条件相同的值,就找合并内容。

其中为了避免使用自定义函数时,选中整列,导致遍历了很多无需遍历的单元格。其中加了优化选区的处理。

用法和Vlookup差不多,或者说我把这个自定义函数设计得和Vlookup差不多。如下图:

一对多2.png

以E2单元格的公式为例,解析一下用法:

第1个参数是D2,即查找D2的值;

第2个参数是A:B,即在A:B列中查找;

第3个参数是2,即合并A:B列中的第2列找到的值;

第4个参数没填,则默认使用逗号分隔。


当然,你也可以把第4个参数写成你需要的分隔符:

一对多3.png


点击次数:  更新时间:2017-02-15 16:10:08  【打印此页】  【关闭】
上一条:Excel工作表按照表名排序  下一条:不及格成绩汇总
本站动态|在线留言|在线反馈|友情链接|会员中心|站内搜索|网站地图|网站管理

中山市天鸣科技发展有限公司 版权所有 1999-2024 粤ICP备10043721号

QQ:18449932

免费Excel教程、Excel技巧、Excel培训、Excel函数公式、Excel图表、Excel VBA

Excel教程|Excel技巧|Excel培训|Excel函数公式|Excel图表|VBA

Powered by MetInfo 5.3.12 ©2008-2025  www.metinfo.cn