营长说

在数据清洗和整理中,总会遇到形形色色的要求。今天营长分享的是一对相反的操作,将Excel文本多行变一行,一行变多行。会用到Excel最新的TEXTJOINFILTER函数,也会用到Excel强大的后台Power Query编辑器。

1 多行变一行

今天的案例来自上周企业内训的培训部门负责人,想把左侧的每人多行列表变成右侧的每人一行,这样每位员工登记的设备就一目了然。




esayexcel 一行数据拆分处理 excel拆分一行为多行_esayexcel 一行数据拆分处理


方法一:FILTER函数(适合365版本)

FILTER函数是Office 365版本新增的动态筛选函数

这里用到转置函数TRANSPOSE和FILTER的组合,结果在不同的单元格中。


esayexcel 一行数据拆分处理 excel拆分一行为多行_excel一行拆分多行_02


在E2单元格中输入公式

=TRANSPOSE(FILTER($B$2:$B$8,$A$2:$A$8=D2))

后面单元格均会自动填充结果,向下拖拽公式即可。

方法二:TEXTJOIN函数(适合2019和365版本)

TEXTJOIN函数可以把多个区域的文本,用特定符号连接起来。

这里用TEXTJOIN和IF函数,根据姓名匹配各自的设备型号,用“、”连接放在一个单元格中。


esayexcel 一行数据拆分处理 excel拆分一行为多行_excel一行拆分多行_03


在E2单元格中输入公式:

=TEXTJOIN("、",,IF($A$2:$A$8=D2,$B$2:$B$8,""))

方法三:用Power Query工具(适合2016及以上版本)

从2016版本开始,Excel自带强大的数据查询工具Power Query,2010和2013版本都需要安装插件。

PQ插件官方下载地址:

https://www.microsoft.com/zh-cn/download/details.aspx?id=39379

如果是Excel 2003/07版本,友情拥抱,很抱歉,朋友,现在是公元2020年了,你是不是应该换个Excel版本了呢?

回到本例,如下图将表格导入到PQ编辑器中,本文用365版本演示。


esayexcel 一行数据拆分处理 excel拆分一行为多行_microsoft_04


按姓名进行分组


esayexcel 一行数据拆分处理 excel拆分一行为多行_excel一行拆分多行_05


新列名为”设备“,操作选择”所有行“。


esayexcel 一行数据拆分处理 excel拆分一行为多行_esayexcel 一行数据拆分处理_06


只需要将它自动生成的公式编辑栏里的公式内容稍做下修改即可搞定多行变单行的操作。


esayexcel 一行数据拆分处理 excel拆分一行为多行_esayexcel 一行数据拆分处理_07


each Text.Combine(_[登记设备],",")

Text.Combine()是字符合并函数,根据第二个参数给出的分隔符,将前面的内容进行合并.关于函数的介绍可以参考官方介绍。

https://docs.microsoft.com/zh-cn/powerquery-m/text-combine


esayexcel 一行数据拆分处理 excel拆分一行为多行_microsoft_08


最后”关闭并上载“即可。


esayexcel 一行数据拆分处理 excel拆分一行为多行_excel一行拆分多行_09


2 一行变多行

也会遇到一行数据,如何快速按姓名变成多行呢?如下图。


esayexcel 一行数据拆分处理 excel拆分一行为多行_上载_10


最方便快捷的方法还是用PQ编辑器里的分列到行功能,适合2019和365版本。

先将数据导入。


esayexcel 一行数据拆分处理 excel拆分一行为多行_上载_11


【拆分列】--【按分隔符】


esayexcel 一行数据拆分处理 excel拆分一行为多行_Power_12


输入自定义符号”、“,拆分为”“,这一步很关键。


esayexcel 一行数据拆分处理 excel拆分一行为多行_Power_13


结果立马呈现,就可以上载到Excel工作簿中。


esayexcel 一行数据拆分处理 excel拆分一行为多行_Power_14


好,今天的教程就是这些。