|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
1.任务需求:在无合并单元格数据表中,查找关键词,并汇总该关键词多个相关数据项,然后合并到指定单元格内
2.数据特点:本次任务原始数据包含了各场所不同时间巡查出的问题隐患,场所名称有重复、同一问题在不同场所出现形成重复数据。我们最终是要提取各个场所的问题隐患,这个不能有重复。
3.关键问题:多条件去除重复值;查找指定位置;合并连续区域字符;根据条件确定区域行高;
4.实现路径:
4.1去除重复数据
4.1.1去除重复值,先对场所建筑名称和问题隐患列进行排序(升序、降序均可),注意排序时【建筑名称】为主要关键字、【问题隐患】为次要关键字,这样排序 后便于实现数据引用;
4.1.2设置条件对问题隐患数据进行引用,重复项不引用。if()函数的条件是:当前数据与上一行数据相同时,数据显示空,不相同时进行引用,这里要同时考察两个条件,分别是【建筑名称】、【问题隐患】,公式:=IF(AND(E2=E1,B2=B1),"",B2&";");
4.2显示指定数据在指定表格中的位置信息
4.2.1先用match()函数定位行位置,再用ADDRESS()显示数据所在单元格的名称,接着用INDIRECT()函数显示单元格位置,有了位置信息后,我们就可以用OFFSET()函数实现指定区域范围。
4.2.2注意OFFSET()函数中,引用范围的行数是不确定的,这里要通过统计关键词出现的次数(这也是前面排序后的优势),这个用SUMPRODUCT(--(巡检内容导出!E:E=B2)函数公式可以实现(并且可以对多位数值数据进行查找,比如身份证号),公式:=OFFSET(INDIRECT(ADDRESS(MATCH(B2,巡检内容导出!E:E,0),5,4,,"巡检内容导出")),0,1,SUMPRODUCT(--(巡检内容导出!E:E=B2)),1)
5.合并字符:
1.用CONCAT()函数来实现对指定区域内的单元格内容合并。
2.最终生成公式:=CONCAT(OFFSET(INDIRECT(ADDRESS(MATCH(B2,巡检内容导出!E:E,0),5,4,,"巡检内容导出")),0,1,SUMPRODUCT(--(巡检内容导出!E:E=B2)),1))
|
|