分享

Excel如何竖表改横表?多行合并为一行?只需三步教你搞定

 杞乡青年 2019-03-23
本文将用到:OR(条件1,条件2,……) 结果为TRUE/FALSEFIND/SEARCH(查询值,文本/数据) 结果为数值/报错ISERROR(报错判断) 结果报错TRUE,正确FALSE多条件VLOOKUP(关键字,多列区域,位置,False)

Excel如何竖表改横表?多行合并为一行?只需三步教你搞定

竖表改为横表

昨天看到求教将竖表改为横表的问题,仔细观察横表或竖表,前两列结构完全一致,并不存在横表竖表的结构差异。而处理方法实际上是表2将表1前两列去重后,再将第三列汇总而成。

前两列去重并不难,只需使用到菜单栏'数据'中的'删除重复值'功能即可实现。

关键在于将第三列多行数据汇总。

Excel如何竖表改横表?多行合并为一行?只需三步教你搞定

删除重复项的去重操作

如何将多行数据汇总到一行,并且用符号间隔呢?

我们用一个实际案例来说明。

Excel如何竖表改横表?多行合并为一行?只需三步教你搞定

将多行数据汇总为一行

思路:做两列辅助列,在第一个辅助列中,将列表按照同一比赛、同一班级进行累计汇总;在第二个辅助列进行取数标记;使用查询函数将结果自动链接到汇总表。

第一步:在第一个辅助列(绿色列E列)进行分类累计汇总

Excel如何竖表改横表?多行合并为一行?只需三步教你搞定

多行合并为一行的第1步

首先,先将数据进行排序,按照比赛项目、班级升序排序;

接着,以第3行为例,判断是否与第2行比赛项目、班级有不同:

若与比赛项目、班级任一不同,则不汇总,但要取此行D列数据;若两者均相同,则参与汇总,将上行汇总与此行数据用符号'&'及间隔逗号连接起来。

以单元格E3为例,公式为:

IF(OR(B3<>B2,C3<>C2),D3,E2&','&D3)

绿色E列其他单元格,下拉填充即可。

第二步:在F列(橙色列)进行判断,是否此行为最终汇总行

Excel如何竖表改横表?多行合并为一行?只需三步教你搞定

多行合并为一行的第2步

根据第一步的累计列表的原理可知,除非当前行与上一行的的比赛项目或班级两者有任一不同,E列停止累计汇总。并且下一行作为重新累计汇总的起始点,是没有间隔符号逗号的。因此,只要能够判断当前行是否停止累计,或下一行重新累计,就可以判断是否为同一产品和销售渠道的最终汇总行。而判断标志为是否包含逗号。

以单元格F3为例,公式为:

IF(ISERROR(FIND(',',E4))=TRUE,'Y','')

Excel如何竖表改横表?多行合并为一行?只需三步教你搞定

判断是否为汇总行并做标记的公式思路

公式为函数组合,FIND是查询函数,用来查询下一行是否包含逗号,如果有逗号会返回一个数值,说明当前行是不是最终汇总行,不取数行,不做标;如果没有查询到逗号则会报错,则说明当前行是最终汇总行,是取数行,做标记'Y'。

表哥Tips:

函数FIND(),在当前案例中也可以替换为SEARCH(),用法一致。但如果列表内容是英文,如果对大小写的匹配要求非常严格,此时就要注意使用FIND()。

第三步:将做标记的数据表,通过查询函数VLOOKUP链接到最终汇总表

Excel如何竖表改横表?多行合并为一行?只需三步教你搞定

通过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)

表哥Tips:

上述公式由于使用数组计算,因此在进行计算时,要同时按下键盘'Shift+Ctrl+Enter',按下之后公式最外层会出现花括号'{}',表示进行操作成功。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多