返回列表 上一主題 發帖

同一發票號碼列出所有訂單編號(列在同一儲存格)

回復 1# leiru
請測試看看,謝謝
Sub test()
Dim Arr, xD, i&, T$
Set xD = CreateObject("Scripting.Dictionary")
Arr = Range([a1], [b65536].End(3))
For i = 2 To UBound(Arr)
    T = Arr(i, 1): If T = "" Then GoTo 99
    If xD.Exists(T) Then
        xD(T) = xD(T) & "、" & Arr(i, 2)
    Else
        xD(T) = Arr(i, 2)
    End If
99: Next i
Range("d2").Resize(xD.Count, 1) = Application.Transpose(xD.keys)
Range("e2").Resize(xD.Count, 1) = Application.Transpose(xD.Items)
End Sub

TOP

回復  samwang


    請教前輩 字典只能1個key對應item? 可以1個對多個嗎?
Andy2483 發表於 2021-10-14 12:00


key可以很多個,但是每個key 是唯一,且對應的item可以很多個,謝謝。

TOP

回復  samwang


    謝謝指導
再請教
如果發票號碼對應的客戶訂單不要用、符號個開放同一儲存格,
...
Andy2483 發表於 2021-10-14 12:35


Sub test2()
Dim Arr, Brr(), xD, T$, k, TC%, TC1%, R%, C%
Set xD = CreateObject("Scripting.Dictionary")
Arr = Range([a1], [b65536].End(3))
For i = 2 To UBound(Arr)
    T = Arr(i, 1): If T = "" Then GoTo 99
    If xD.Exists(T) Then
        xD(T) = xD(T) & "、" & Arr(i, 2)
    Else
        xD(T) = Arr(i, 2)
    End If
99: Next i
ReDim Brr(1 To xD.Count, 1 To UBound(Arr))
R = 1
For Each k In xD.keys
    xD(k) = Split(xD(k), "、")
    TC = UBound(xD(k)) + 2
    If TC > TC1 Then TC1 = TC
    Brr(R, 1) = k
    For C = 2 To UBound(xD(k)) + 2
        Brr(R, C) = xD(k)(C - 2)
    Next
    R = R + 1
Next
Range("g2").Resize(R - 1, TC1) = Brr
End Sub

TOP

        靜思自在 : 稻穗結得越飽滿,越會往下垂,一個人越有成就,就要越有謙沖的胸襟。
返回列表 上一主題