本文将用到:OR(条件1,条件2,……) 结果为TRUE/FALSEFIND/SEARCH(查询值,文本/数据) 结果为数值/报错ISERROR(报错判断) 结果报错TRUE,正确FALSE多条件VLOOKUP(关键字,多列区域,位置,False) 竖表改为横表 昨天看到求教将竖表改为横表的问题,仔细观察横表或竖表,前两列结构完全一致,并不存在横表竖表的结构差异。而处理方法实际上是表2将表1前两列去重后,再将第三列汇总而成。 前两列去重并不难,只需使用到菜单栏'数据'中的'删除重复值'功能即可实现。 关键在于将第三列多行数据汇总。 删除重复项的去重操作 如何将多行数据汇总到一行,并且用符号间隔呢?我们用一个实际案例来说明。 将多行数据汇总为一行 思路:做两列辅助列,在第一个辅助列中,将列表按照同一比赛、同一班级进行累计汇总;在第二个辅助列进行取数标记;使用查询函数将结果自动链接到汇总表。 第一步:在第一个辅助列(绿色列E列)进行分类累计汇总多行合并为一行的第1步 首先,先将数据进行排序,按照比赛项目、班级升序排序; 接着,以第3行为例,判断是否与第2行比赛项目、班级有不同: 若与比赛项目、班级任一不同,则不汇总,但要取此行D列数据;若两者均相同,则参与汇总,将上行汇总与此行数据用符号'&'及间隔逗号连接起来。 以单元格E3为例,公式为: IF(OR(B3<>B2,C3<>C2),D3,E2&','&D3) 绿色E列其他单元格,下拉填充即可。 第二步:在F列(橙色列)进行判断,是否此行为最终汇总行多行合并为一行的第2步 根据第一步的累计列表的原理可知,除非当前行与上一行的的比赛项目或班级两者有任一不同,E列停止累计汇总。并且下一行作为重新累计汇总的起始点,是没有间隔符号逗号的。因此,只要能够判断当前行是否停止累计,或下一行重新累计,就可以判断是否为同一产品和销售渠道的最终汇总行。而判断标志为是否包含逗号。 以单元格F3为例,公式为: IF(ISERROR(FIND(',',E4))=TRUE,'Y','') 判断是否为汇总行并做标记的公式思路 公式为函数组合,FIND是查询函数,用来查询下一行是否包含逗号,如果有逗号会返回一个数值,说明当前行是不是最终汇总行,不取数行,不做标;如果没有查询到逗号则会报错,则说明当前行是最终汇总行,是取数行,做标记'Y'。
第三步:将做标记的数据表,通过查询函数VLOOKUP链接到最终汇总表通过VLOOKUP多条件查询链接到汇总表 函数Vlookup常规用法的关键字仅为一列,而案例中,需要满足三个条件,因此将多列组成集合,进行多条件匹配查询。 关键列三个条件是: 1. 比赛项目相同 2. 班级相同 3. 辅助2标记为”Y” 则以汇总表J3为例,公式为: =VLOOKUP(H3&I3&'Y',IF({1,0},B:B&C:C&F:F,E:E),2,FALSE)
|
|
来自: 杞乡青年 > 《EXCEL办公资料》