ªð¦^¦Cªí ¤W¤@¥DÃD µo©«

¦P¤@µo²¼¸¹½X¦C¥X©Ò¦³­q³æ½s¸¹(¦C¦b¦P¤@Àx¦s®æ)

¦P¤@µo²¼¸¹½X¦C¥X©Ò¦³­q³æ½s¸¹(¦C¦b¦P¤@Àx¦s®æ)

¦C¥X¦P¤@µo²¼¸¹½Xªº©Ò¦³­q³æ½s¸¹(Åã¥Ü¦b¦P¤@Àx¦s®æ)
µª®×§e²{µ²ªG¦pDÄæ¤ÎEÄæ
joyce

¦^´_ 11# ­ã´£³¡ªL


    ÁÂÁ«e½ú
¤@¦~¦h¤F,²{¦b¤~¤j·§¬ÝÀ´
°õ¦æµ²ªG:



Option Explicit
Sub test_02()
Dim i&, N&, R&, T$, T2$, C%, Cx%, Arr, Brr, xD
'¡ô«Å§iÅܼÆ(i,N,R)¬Oªø¾ã¼ÆÅܼÆ,(T,T2)¬O¦r¦êÅܼÆ,(C,Cx)¬Oµu¾ã¼ÆÅܼÆ,
'¨ä¥¦¬O³q¥Î«¬ÅܼÆ
Set xD = CreateObject("Scripting.Dictionary")
'¡ô¥OxD¬O ¦r¨å
Arr = Range([a1], [b65536].End(3))
'¡ô¥OArr¬O¤Gºû°}¦C!¥H[A1]¨ìBÄæ³Ì«á¤@­Ó¦³¤º®eÀx¦s®æ,³o½d³òÀx¦s®æ­È±a¤J
ReDim Brr(1 To UBound(Arr), 1 To 200)
'¡ô«Å§iBrr°}¦C½d³ò!Áa¦V±q1¨ìArr°}¦C³Ì¤j¯Á¤Þ¦C¸¹,¾î¦V±q1¨ì200
For i = 2 To UBound(Arr)
'¡ô³]¶¶°j°é!i±q2¨ì Arr°}¦C³Ì¤j¯Á¤Þ¦C¸¹
    T = Arr(i, 1)
    '¡ô¥OT³o¦r¦êÅܼƬO i°j°é¦C1ÄæArr°}¦C­È
    T2 = Arr(i, 2)
    '¡ô¥OT2³o¦r¦êÅܼƬO i°j°é¦C2ÄæArr°}¦C­È
    If T = "" Or T2 = "" Then GoTo 99
    '¡ô¦pªGT¦r¦êÅܼƬO ªÅ¦r¤¸ ©Î  ¦pªGT2¦r¦êÅܼƬO ªÅ¦r¤¸,´N¸õ¨ì99¦ì¸mÄ~Äò°õ¦æ
    R = xD(T)
    '¡ô¥OR³oªø¾ã¼ÆÅܼƬO ¥HT¦r¦êÅܼƬdxD¦r¨å¦^¶Çªºitem­È  (PS:­Y¬d¤£¨ì!Rªì©l­È¬O 0)
    C = xD(T & "/c")
    '¡ô¥OC³oµu¾ã¼ÆÅܼƬO ¥HT¦r¦êÅܼƳs±µ"/c"ªº·s¦r¦ê,¬dxD¦r¨å¦^¶Çªºitem­È
    '(PS:­Y¬d¤£¨ì!Cªì©l­È¬O 0)
    If R = 0 Then
    '¡ô¦pªGRÅܼƬO 0 ??
       N = N + 1
       '¡ô¥ON³oªø¾ã¼ÆÅܼƬO ¦Û¨­­È +1  (PS:Nªì©l­È¬O 0)
       R = N + 1
       '¡ô¥ORÅܼƬO NÅÜ¼Æ +1
       xD(T) = R
       '¡ô¥O¥HTÅܼƷíkey,item¬O RÅܼÆ,©ñ¦^¦r¨å
       Brr(R, 1) = Arr(i, 1)
       '¡ô¥OÅܼƦC1ÄæBrr°}¦C­È¬O i°j°é¦C1ÄæArr°}¦C­È
    End If
    C = C + 1
    '¡ô¥OCÅܼƬO ¦Û¨­­È +1
    xD(T & "/c") = C
    '¡ô¥O¥HTÅܼƳs±µ"/c"ªº·s¦r¦ê·íkey,item¬O CÅܼÆ,©ñ¤J¦r¨å
    Brr(R, C + 1) = T2
    '¡ô¥ORÅܼƦC(C1ÅܼÆ+1)ÄæBrr°}¦C­È¬O T2¦r¦êÅܼÆ
    If C > Cx Then Cx = C: Brr(1, Cx + 1) = "­q³æ(" & Cx & ")"
    '¡ô¦pªGCÅÜ¼Æ > Cx³oµu¾ã¼ÆÅܼÆ,´N¥OCxÅܼƬO CÅܼÆ,
    '1¦C(CxÅܼÆ+1)ÄæBrr°}¦C­È¬O "­q³æ(" ³s±µ CxÅÜ¼Æ ¦A³s±µ ")" ²Õ¦¨ªº·s¦r¦ê

99: Next i
Brr(1, 1) = "µo²¼¸¹½X"
Range("g1").Resize(N + 1, Cx + 1) = Brr
'[G1]Àx¦s®æÂX®i¦V¤U(NÅܼÆ+1)¦C,¦V¥kÂX®i(CxÅܼÆ+1)Äæ,³o½d³òÀx¦s®æ­È¥HBrr°}¦C­È±a¤J
End Sub
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

¦hÄ榡:
Sub test_02()
Dim Arr, Brr, xD, i&, T$, T2$, R&, C%, Cx%, N&
Set xD = CreateObject("Scripting.Dictionary")
Arr = Range([a1], [b65536].End(3))
ReDim Brr(1 To UBound(Arr), 1 To 200)
For i = 2 To UBound(Arr)
    T = Arr(i, 1): T2 = Arr(i, 2)
    If T = "" Or T2 = "" Then GoTo 99
    R = xD(T):  C = xD(T & "/c")
    If R = 0 Then N = N + 1: R = N + 1: xD(T) = R: Brr(R, 1) = Arr(i, 1)
    C = C + 1: xD(T & "/c") = C: Brr(R, C + 1) = T2
    If C > Cx Then Cx = C: Brr(1, Cx + 1) = "­q³æ(" & Cx & ")"
99: Next i
Brr(1, 1) = "µo²¼¸¹½X"
Range("g1").Resize(N + 1, Cx + 1) = Brr
End Sub

TOP

¨âÄ榡:
Sub test_01()
Dim Arr, xD, i&, T$, T2$, R&, N&
Set xD = CreateObject("Scripting.Dictionary")
Arr = Range([a1], [b65536].End(3))
For i = 2 To UBound(Arr)
    T = Arr(i, 1): T2 = Arr(i, 2): R = xD(T)
    If T = "" Or T2 = "" Then GoTo 99
    If R > 0 Then Arr(R, 2) = Arr(R, 2) & "¡B" & T2: GoTo 99
    N = N + 1: R = N + 1: xD(T) = R
    Arr(R, 1) = Arr(i, 1):  Arr(R, 2) = T2
99: Next i
Range("d1").Resize(N + 1, 2) = Arr
End Sub

TOP

¦^´_ 8# samwang


    ÁÂÁ«ü¾É!
¦pªG¦C¼Æ¦h!±zªº°õ¦æªº®É¶¡¤ñ§Ú·|ªº¤è¦¡§Ö«Ü¦h!
ÁÂÁ«e½ú«ü¾É! xD(k)(C - 2)

Sub test2_1()
Dim Arr, Brr(), xD, T$, k, MA%, 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
    xD(T) = xD(T) + 1
99: Next i
MA = WorksheetFunction.Max(xD.Items)
ReDim Brr(0 To xD.Count, 1 To MA + 1)
i = 0
For Each k In xD.keys
    Brr(i, 1) = k
    R = 2
    For C = 2 To UBound(Arr)
       If Arr(C, 1) = Brr(i, 1) Then
          Brr(i, R) = Arr(C, 2)
          R = R + 1
       End If
    Next
    i = i + 1
Next
Range("g2").Resize(xD.Count, MA + 1) = Brr
End Sub

TOP

¦^´_  samwang


    ÁÂÁ«ü¾É
¦A½Ð±Ð
¦pªGµo²¼¸¹½X¹ïÀ³ªº«È¤á­q³æ¤£­n¥Î¡B²Å¸¹­Ó¶}©ñ¦P¤@Àx¦s®æ,
...
Andy2483 µoªí©ó 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) & "¡B" & 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), "¡B")
    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

¦^´_ 6# samwang


    ÁÂÁ«ü¾É
¦A½Ð±Ð
¦pªGµo²¼¸¹½X¹ïÀ³ªº«È¤á­q³æ¤£­n¥Î¡B²Å¸¹­Ó¶}©ñ¦P¤@Àx¦s®æ,
¦Ó¬O¤À¶}©ñ¦b¥k°¼ªºÀx¦s®æ±µ¤U¥h©ñ!­n«ç»ò§ï?

TOP

¦^´_  samwang


    ½Ð±Ð«e½ú ¦r¨å¥u¯à1­Ókey¹ïÀ³item? ¥i¥H1­Ó¹ï¦h­Ó¶Ü?
Andy2483 µoªí©ó 2021-10-14 12:00


key¥i¥H«Ü¦h­Ó¡A¦ý¬O¨C­Ókey ¬O°ß¤@¡A¥B¹ïÀ³ªºitem¥i¥H«Ü¦h­Ó¡AÁÂÁ¡C

TOP

¦^´_ 4# samwang


    ½Ð±Ð«e½ú ¦r¨å¥u¯à1­Ókey¹ïÀ³item? ¥i¥H1­Ó¹ï¦h­Ó¶Ü?

TOP

¦^´_ 1# leiru
½Ð´ú¸Õ¬Ý¬Ý¡AÁÂÁÂ
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) & "¡B" & 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

        ÀR«ä¦Û¦b : ¯¸¦b¥b¸ô¡A¤ñ¨«¨ì¥Ø¼Ð§ó¨¯­W¡C
ªð¦^¦Cªí ¤W¤@¥DÃD