关于本站
1、基于Django+Bootstrap开发
2、主要发表本人的技术原创博客
3、本站于 2015-12-01 开始建站
经常碰到有人想把相同的内容对应数据合并显示,说得有点绕,看下图就明白:
右边的很不利于统计数据,只适合看。既然很多人问,就说说如用用自定义函数的方法实现。
为什么不用公式呢?因为公式难度很多,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差不多。如下图:
以E2单元格的公式为例,解析一下用法:
第1个参数是D2,即查找D2的值;
第2个参数是A:B,即在A:B列中查找;
第3个参数是2,即合并A:B列中的第2列找到的值;
第4个参数没填,则默认使用逗号分隔。
当然,你也可以把第4个参数写成你需要的分隔符:
蓝小浅
这个问题我首先想到了PQ的方法耶
2017-01-11 16:54 回复
蓝小浅
看这文章时候我有点小生气,然后不知道怎么表达这种小生气啊哈哈
2017-01-11 17:21 回复