源數(shù)據(jù)
源數(shù)據(jù)
結(jié)果
結(jié)果
要求:同一個(gè)條碼的箱號(hào),位置和屎,用逗號(hào)鏈接起來(lái)阳惹,合計(jì)進(jìn)行求和。
POWERQUERY操作
- 1眶俩、上傳到PQ編輯器莹汤,對(duì)箱號(hào)字段數(shù)據(jù)類(lèi)型更改為文本。
1
- 2颠印、根據(jù)條碼對(duì)箱號(hào)纲岭,位置抹竹,合計(jì)3個(gè)字段進(jìn)行分組求和。
2.1
2.2
- 3止潮、更改箱號(hào)/位置的公式,使用Txet.Combine合并窃判。
- 原公式
= Table.Group(更改的類(lèi)型, {"條碼"}, {{"箱號(hào)", each List.Sum([箱號(hào)]), type text}, {"位置", each List.Sum([位置]), type text}, {"合計(jì)", each List.Sum([合計(jì)]), type number}})
- 更改后的公式
= Table.Group(更改的類(lèi)型, {"條碼"}, {{"箱號(hào)", each Text.Combine([箱號(hào)], ",")}, {"位置", each Text.Combine([位置], ",")}, {"合計(jì)", each List.Sum([合計(jì)]), type number}})
- 4、結(jié)果
結(jié)果
示例文件下載
鏈接: http://pan.baidu.com/s/1jI5NOwQ 密碼: geej
VBA解法
Sub 合并()
Dim arr, brr
arr = [a1].CurrentRegion'將數(shù)據(jù)放進(jìn)數(shù)組arr
ReDim brr(1 To UBound(arr), 1 To UBound(arr, 2))'定義數(shù)組brr和arr一樣大小喇闸,用來(lái)存放合并的數(shù)據(jù)
Set d = CreateObject("scripting.dictionary")'創(chuàng)建字典
For i = 2 To UBound(arr)'遍歷數(shù)據(jù)
If Not d.exists(arr(i, 1)) Then'如果是第一條數(shù)據(jù)
k = k + 1'標(biāo)記行號(hào)
d(arr(i, 1)) = k'用字典標(biāo)記行號(hào)袄琳,方便查詢(xún)
'將數(shù)據(jù)放進(jìn)數(shù)組brr
brr(k, 1) = arr(i, 1)'訂單號(hào)
brr(k, 2) = Format(arr(i, 2), "0000")'箱號(hào),處理成文本
brr(k, 3) = arr(i, 3)'位置
brr(k, 4) = arr(i, 4)'合計(jì)
Else
m = d(arr(i, 1))'讀取標(biāo)識(shí)的行號(hào)
brr(m, 2) = brr(m, 2) & "," & Format(arr(i, 2), "0000")'箱號(hào)用逗號(hào)鏈接
brr(m, 3) = brr(m, 3) & "," & arr(i, 3)'位置用逗號(hào)鏈接
brr(m, 4) = brr(m, 4) + arr(i, 4)'合計(jì)相加
End If
Next
[i4].Resize(k, UBound(brr, 2)) = brr'輸出數(shù)據(jù)
End Sub
示例文件下載
鏈接: http://pan.baidu.com/s/1nuZTCP7 密碼: 587y