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

[µo°Ý] §R°£­«½Æ«á¡A´M§ä­«½Æ«È¤á¸¹½X¥[Á`­È

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


    ÁÂÁ½׾Â,ÁÂÁ«e½ú
«á¾ÇÂǦ¹©«¾Ç²ß«e½úªº¤è®×,¾Ç²ß¤ß±oµù¸Ñ¦p¤U,½Ð«e½ú¦A«ü¾É

°õ¦æ«e:


°õ¦æµ²ªG:


Option Explicit
Sub TEST()
Dim Arr, Brr, xD, T&, i&, j%, U&, N&
'¡ô«Å§iÅܼÆ
Arr = Range([A1], [A65536].End(xlUp)(1, 7))
'¡ô¥OArrÅܼƬO¤Gºû°}¦C,¥O¥H[A1]¨ì (AÄæ³Ì«á¦³¤º®eÀx¦s®æªº¥k¤è7®æ),
'¥H³o½d³òÀx¦s®æ­È±a¤J
'¦PArr = Range([G1], [A65536].End(xlUp))

Set xD = CreateObject("scripting.dictionary")
'¡ô¥OxDÅܼƬO¦r¨å
ReDim Brr(1 To UBound(Arr), 1 To 7)
'¡ô«Å§iBrrÅܼƬO¦PArr°}¦C¤j¤pªºªÅ°}¦C
For i = 2 To UBound(Arr)
'¡ô³]¶¶°j°é
    T = Arr(i, 1): U = xD(T)
    '¡ô¥OTÅܼƬO «È¤á½s¸¹: '¡ô¥OUÅܼƬO ¥HTÅܼƬdxD¦r¨åªºitem­È
    If U > 0 Then Brr(U, 5) = Brr(U, 5) + Arr(i, 5): GoTo 101
    '¡ô¦pªGUÅܼƤw¸g¬ö¿ý¤Fµ²ªG°}¦CBrrªº¯Á¤Þ¦C¸¹?
    '´N¥O¦bµ²ªG°}¦CBrr¥¿½T¦ì¸m²Ö¥[ Arr°}¦Cªºª÷ÃB
    '¥Oµ{§Ç¸õ¨ì 101¼Ðµù¦ì¸mÄ~Äò°õ¦æ

    N = N + 1: U = N: xD(T) = N
    '¡ô¥ONÅܼƲ֥[1 :¥OUÅܼƸËNÅÜ¼Æ­È :¥O¥HTÅܼƷíkey,item¬O NÅܼÆ
    For j = 1 To 7: Brr(U, j) = Arr(i, j): Next
    '¡ô³]¶¶°j°é±Nªì¦¸²Å¦X±ø¥óªº¸ê®Æ±a¤J µ²ªG°}¦CBrr
    'NÅܼƬO¥Î¨Ó²Ö­p¯Á¤Þ¦C¸¹ªº,U¬O¥Î¨Ó²±¸Ë­«½Æ «È¤á½s¸¹¦bµ²ªG°}¦Cªº¯Á¤Þ¦C¸¹

101: Next i
If N > 0 Then [J1].Resize(N, 7) = Brr
'¡ô¦pªGµ²ªG°}¦C¦³¸ê®Æ!´N±q[J1]¶}©l¶K¤J§½³¡ªºBrr°}¦C­È
End Sub
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

¥»©«³Ì«á¥Ñ Andy2483 ©ó 2023-5-9 08:20 ½s¿è

ÁÂÁ½׾Â,ÁÂÁ¦U¦ì«e½ú
«á¾ÇÂǦ¹©«½m²ß°}¦C»P¦r¨å,¾Ç²ß¤è®×¦p¤U,½Ð¦U¦ì«e½ú«ü±Ð

Option Explicit
Sub TEST_1()
Dim Brr,  Y, i&, j%
'¡ô«Å§iÅܼÆ
Set Y = CreateObject("Scripting.Dictionary")
'¡ô¥OYÅܼƬO¦r¨å
Brr = Range([G1], [A65536].End(xlUp))
'¡ô¥OÅܼƬO¤Gºû°}¦C¨Ã¥HÀx¦s®æ­È­Ë¤J
For i = 2 To UBound(Brr)
'¡ô³]¶¶°j°é
   If Y(Brr(i, 1)) = "" Then
   '¡ô³oºÃ°Ý¥y¤w¸g¤£ª¾¤£Ä±±N key¬OBrr(i, 1),item¬O"" ,¯Ç¤J¦bY¦r¨å¤¤¤F
      Y(Brr(i, 1)) = Y.Count
      '¡ô¯Á©Ê´N¨Ì·í¤Ukeyªº¼Æ¶q·íÅܼƬö¿ý¦¹key¦b°}¦C¤¤ªº¯Á¤Þ¦C¸¹
      For j = 1 To 7: Brr(Y.Count, j) = Brr(i, j): Next: GoTo i01
      '¡ô¦]¬°¬O­º¦¸¯Ç¤J¦¹key,©Ò¥H±N¦UÄæ¦ì­È±a¤J«ü©w¦ì¸m,Âл\°}¦C­È,
      '¡ô¥H¤W´N¤w¸g³B²z¤F­º¦¸­È,¤£¥²²Ö¥[ª÷ÃB,©Ò¥H¸õ¨ìi01«ü©w¦ì¸mÄ~Äò°õ¦æ

   End If
   Brr(Y(Brr(i, 1)), 5) = Brr(Y(Brr(i, 1)), 5) + Brr(i, 5)
   '¡ô¦pªGµ{§Ç¯à¶]¨ì³o¸Ì,¥Nªí¤£¬O­º¦¸,±N¸Ókey©Ò±aªºitem½Õ¥X¨Ó(¯Á¤Þ¦C¸¹),
   'Åýª÷ÃB°µ²Ö¥[

i01: Next
[J:P].ClearContents
'¡ô²M°£µ²ªGÀx¦s®æ¸ê®Æ
If Y.Count > 0 Then [J1].Resize(Y.Count, 7) = Brr
'¡ô¦pªG¦r¨å¸Ì¦³keys!´N±q[J1]¶}©l¶K¤JBrr°}¦C§½³¡­È
Set Y = Nothing: Erase Brr
'¡ôÄÀ©ñÅܼÆ
End Sub
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

        ÀR«ä¦Û¦b : ªY½à§O¤H´N¬O²øÄY¦Û¤v¡C
ªð¦^¦Cªí ¤W¤@¥DÃD