Powerquery合并相同项Text.Combine栗子2 |
您所在的位置:网站首页 › powerquery怎么用合并查询删除重复项 › Powerquery合并相同项Text.Combine栗子2 |
源数据
源数据
结果
结果
要求:同一个条码的箱号,位置,用逗号链接起来,合计进行求和。
POWERQUERY操作
1、上传到PQ编辑器,对箱号字段数据类型更改为文本。
1
2、根据条码对箱号,位置,合计3个字段进行分组求和。
2.1
2.2
3、更改箱号/位置的公式,使用Txet.Combine合并。
原公式
= Table.Group(更改的类型, {"條碼"}, {{"箱号", each List.Sum([箱號]), type text}, {"位置", each List.Sum([位置]), type text}, {"合计", each List.Sum([合計]), type number}}) 更改后的公式= Table.Group(更改的类型, {"條碼"}, {{"箱号", each Text.Combine([箱號], ",")}, {"位置", each Text.Combine([位置], ",")}, {"合计", each List.Sum([合計]), type number}}) 4、结果 结果 示例文件下载链接: http://pan.baidu.com/s/1jI5NOwQ 密码: geej VBA解法 Sub 合并() Dim arr, brr arr = [a1].CurrentRegion'将数据放进数组arr ReDim brr(1 To UBound(arr), 1 To UBound(arr, 2))'定义数组brr和arr一样大小,用来存放合并的数据 Set d = CreateObject("scripting.dictionary")'创建字典 For i = 2 To UBound(arr)'遍历数据 If Not d.exists(arr(i, 1)) Then'如果是第一条数据 k = k + 1'标记行号 d(arr(i, 1)) = k'用字典标记行号,方便查询 '将数据放进数组brr brr(k, 1) = arr(i, 1)'订单号 brr(k, 2) = Format(arr(i, 2), "0000")'箱号,处理成文本 brr(k, 3) = arr(i, 3)'位置 brr(k, 4) = arr(i, 4)'合计 Else m = d(arr(i, 1))'读取标识的行号 brr(m, 2) = brr(m, 2) & "," & Format(arr(i, 2), "0000")'箱号用逗号链接 brr(m, 3) = brr(m, 3) & "," & arr(i, 3)'位置用逗号链接 brr(m, 4) = brr(m, 4) + arr(i, 4)'合计相加 End If Next [i4].Resize(k, UBound(brr, 2)) = brr'输出数据 End Sub 示例文件下载链接: http://pan.baidu.com/s/1nuZTCP7 密码: 587y |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |