Excel新函数Textjoin函数是字符拼接的利器,与之前的“&”与CONCATENATE函数相比,简直是太好用了,比之新函数CONCAT函数也是功能更加强大些。
关于Textjoin函数和Concat函数,在我Excel函数专栏中有详细介绍。
今天我们使用Power Query来实现文本拼接,我们来看例子:
我们要像做数据透视表一样,把文本透视过来,拼接在一起。
Excel中,我们有了新函数Textjoin,这个工作就变得非常简单了,我们只需要把条件列清楚就行,如果班级等于初一,就引用班级的内容,否者为空。
=TEXTJOIN(",",TRUE,IF($A$2:$A$19=D2,$B$2:$B$19,""))
这是一个单个单元格的数组公式,需要CTRL+SHIFT+ENTER三件结束。
那么在Power Query中我们有什么办法来进行这样的拼接呢?
有两个思路:
Text.Combine函数是使用指定的分隔符,来拼接列表内的文本,需要两个参数:
首先要做分组操作,使用年级分组
然后修改上面标红的位置的内容:
这样就可以了,代码如下:
let 源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content], 更改的类型 = Table.TransformColumnTypes(源,{{"年级", type text}, {"班级", type text}}), 分组的行 = Table.Group(更改的类型, {"年级"}, {{"计数", each Text.Combine([班级],",")}}) in 分组的行
这个也要用到,我们讲过的Power Query组内编号,然后使用组内编号透视列,然后再合并列。
第一步:组内编号
先分组>添加组内编号>展开表
第二步:透视列
删除多余的全索引列,使用组内编号透视列
第三步:合并列
使用逗号做分隔符合并选中的列
代码:
let 源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content], 更改的类型 = Table.TransformColumnTypes(源,{{"年级", type text}, {"班级", type text}}), 已添加索引 = Table.AddIndexColumn(更改的类型, "索引", 1, 1), 分组的行 = Table.Group(已添加索引, {"年级"}, {{"计数", each Table.AddIndexColumn(_,"A",1,1)}}), #"展开的“计数”" = Table.ExpandTableColumn(分组的行, "计数", {"年级", "班级", "索引", "A"}, {"年级.1", "班级", "索引", "A"}), 删除的列 = Table.RemoveColumns(#"展开的“计数”",{"索引"}), 已透视列 = Table.Pivot(Table.TransformColumnTypes(删除的列, {{"A", type text}}, "zh-CN"), List.Distinct(Table.TransformColumnTypes(删除的列, {{"A", type text}}, "zh-CN")[A]), "A", "班级"), 合并的列 = Table.CombineColumns(已透视列,{"1", "2", "3", "4", "5", "6"},Combiner.CombineTextByDelimiter(",", QuoteStyle.None),"已合并") in 合并的列
两种方法各有千秋,而且可以互相转换,第一种方法,我们也可以通过符号拆分列,变成透视列的效果,后一种方法,透视列后再合并。很多时候,我们会需要在这两种状态之间变来变去,就像和面一样,把数据揉来揉去,变成我们想要的样子。
总的说来,Textjoin函数与Text.Combine函数最为接近,
页面更新:2024-05-08
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号