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

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

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

½Ð±Ð¦U¦ì°ª¤â~
²{¦³­Ó¤u§@ªí

¤w¸g¥Î
  1. Sub ²¾°£³æ¸¹­«½Æ()
  2. Set dic = CreateObject("scripting.dictionary")
  3. For i = Range("G65536").End(3).Row To 1 Step -1
  4. If dic.Exists(Cells(i, "G").Value) Then
  5. Rows(i).Delete
  6. Else
  7. dic(Cells(i, "G").Value) = ""
  8. End If
  9. Next i
  10. End Sub
½Æ»s¥N½X
§R°£³æ¸¹­«½Æªº
¦ý¤§«á»Ý­n¨Ì«È¤á½s¸¹(AÄæ)  ­Y¦³¬Û¦Pªº½s¸¹ »Ý­n¥[Á`EÄæ
(GÄæ³æ¸¹¥i©¿²¤ ¥L¬O®³¨ÓÁקK³æ¸¹KEY­«½Æ)
·Q½Ð°Ý¸Ó«ç»òÄ~Äò°µ©O?
³Ì«á·Q§e²{ªºµ²ªG


ªþ¥ó: ´ú¸Õ.zip (510.46 KB)

¥»©«³Ì«á¥Ñ 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

¦^´_ 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

¦^´_ 10# Changbanana

­Y¤£­n¨D°õ¦æ³t«×ªº¸Ü¥i¥Î³o­Ó¡C
  1. Sub UseFind()
  2.     Dim cell As Range
  3.     Columns("I:O").ClearContents
  4.     [I1].Resize(1, 7) = [A1].Resize(1, 7).Value
  5.     er = 2
  6.     For i = 2 To Range("A65536").End(3).Row
  7.         Set cell = Columns(9).Find(Cells(i, 1).Value, lookat:=xlWhole)
  8.         If cell Is Nothing Then
  9.             Cells(er, 9).Resize(1, 7) = Cells(i, 1).Resize(1, 7).Value
  10.             er = er + 1
  11.         Else
  12.             Cells(cell.Row, 13).Value = Cells(cell.Row, 13).Value + Cells(i, 5).Value
  13.         End If
  14.     Next i
  15. End Sub
½Æ»s¥N½X

TOP

¥»©«³Ì«á¥Ñ GBKEE ©ó 2016-10-2 09:03 ½s¿è

¦^´_ 10# Changbanana
¤£¥Î¦r¨åª«¥ó ªº¼gªk
  1. Option Explicit
  2. Sub Ex()
  3.     Dim r As Integer, Ar(), i As Integer
  4.     '*******«e¸m§@·~
  5.     With Range("A:A").CurrentRegion
  6.             'CurrentRegion :¥Ø«e°Ï°ì,¬O«ü¥H¥ô·NªÅ¥Õ¦C¤ÎªÅ¥ÕÄ檺²Õ¦X¬°Ãä¬Éªº½d³ò
  7.             .Sort key1:=.Cells(1), order1:=xlAscending, key2:=.Cells(4), order1:=xlAscending, header:=xlYes    '±Æ§Ç
  8.             .Columns(1).AdvancedFilter ACTION:=xlFilterCopy, COPYTORANGE:=Cells(1, Columns.Count), Unique:=True
  9.             '¶i¶¥¿z¿ï:¶i¶¥¤£­«½Æ¸ê®Æ,¦Ü©ó¤u§@ªíªº³Ì¥kÃ䪺Äæ¦ì
  10.     End With
  11.     '************************
  12.     r = Cells(Rows.Count, Columns.Count).End(xlUp).Row                                          '­pºâ ¿z¿ï ¸ê®Æ¼Æ («È¤á½s¸¹)
  13.     ReDim Ar(1 To r)                                                                                                    '­«¸m°}¦C¤j¤p¬° («È¤á½s¸¹)­Ó¼Æ
  14.     Ar(1) = Application.Transpose(Application.Transpose(Range("A1").Resize(, 6)))   'ªíÀY ¸m¤J°}¦C
  15.     For i = 2 To r                                                                                                             '°j°é («È¤á½s¸¹)
  16.         With Range("A:A")
  17.             .Replace Cells(i, Columns.Count), "=1/0"                                                          '±N («È¤á½s¸¹) §ï¬° ¿ù»~­È
  18.             With .SpecialCells(xlCellTypeFormulas, xlErrors).Resize(, 6)                           '¿ù»~­Èªº½d³ò
  19.                 .Columns(1) = Cells(i, Columns.Count)                                                        ' '±N  ¿ù»~­È §ï¦^ ­ì «È¤á½s¸¹
  20.                 Ar(i) = Array(.Cells(1).Value, .Cells(2).Value, .Cells(3).Value, .Cells(4).Value, Application.Sum(.Columns(5)), .Cells(.Rows.Count, 6).Value)                                                                                                                                      'Application.Sum(.Columns(5))  ¥[Á`(«È¤á½s¸¹)ªºCASH
  21.             End With
  22.         End With
  23.     Next
  24.     With Range("I1")
  25.         .Resize(r, 6).EntireColumn = ""    '²M°£Â¦³¸ê®Æ
  26.         .Resize(r, 6) = Application.Transpose(Application.Transpose(Ar))                     '½d³ò¤º¾É¤JÂà¸m2¦¸ªº°}¦C
  27.     End With
  28.     Cells(1, Columns.Count).EntireColumn = ""    '²M°£Â¦³¸ê®Æ
  29. End Sub
  30. '*********************************************************************
  31. Sub Ex1()
  32.     Dim Rng As Range, Ar(), i As Integer
  33.     '*******«e¸m§@·~
  34.     With Range("A:A").CurrentRegion
  35.             'CurrentRegion :¥Ø«e°Ï°ì,¬O«ü¥H¥ô·NªÅ¥Õ¦C¤ÎªÅ¥ÕÄ檺²Õ¦X¬°Ãä¬Éªº½d³ò
  36.             .Sort key1:=.Cells(1), order1:=xlAscending, key2:=.Cells(4), order1:=xlAscending, header:=xlYes    '±Æ§Ç
  37.     End With
  38.     '************************
  39.     i = 1
  40.     ReDim Ar(1 To i)                                                                                                    '­«¸m°}¦C¤j¤p¬° («È¤á½s¸¹)­Ó¼Æ
  41.     Ar(1) = Application.Transpose(Application.Transpose(Range("A1").Resize(, 6)))   'ªíÀY ¸m¤J°}¦C
  42.     Set Rng = Range("A2")
  43.     Do While Rng <> ""                                            '«È¤á½s¸¹ <> ""
  44.         i = i + 1
  45.         ReDim Preserve Ar(1 To i)
  46.         With Rng
  47.                 Ar(i) = Array(.Cells(1).Value, .Cells(1, 2).Value, .Cells(1, 3).Value, .Cells(1, 4).Value, .Cells(1, 5).Value, .Cells(.Rows.Count, 6).Value)
  48.         End With
  49.         Do While Rng = Rng.Offset(1)                          '¦P¤@ («È¤á½s¸¹)
  50.             Ar(i)(4) = Ar(i)(4) + Rng.Cells(1, 5)               '¥[Á`¦P¤@ («È¤á½s¸¹)ªºCASH
  51.             Ar(i)(5) = Rng.Cells(2, 6)
  52.             Set Rng = Rng.Offset(1)                                '¤U¤@­Ó«È¤á½s¸¹
  53.         Loop
  54.         Set Rng = Rng.Offset(1)                                     '¤U¤@­Ó«È¤á½s¸¹
  55.     Loop
  56.     With Range("I1")
  57.         .Resize(, 6).EntireColumn = ""    '²M°£Â¦³¸ê®Æ
  58.         .Resize(i, 6) = Application.Transpose(Application.Transpose(Ar))                     '½d³ò¤º¾É¤JÂà¸m2¦¸ªº°}¦C
  59.     End With
  60. End Sub
½Æ»s¥N½X
·P®¦ªº¤ß......(¦b³Â»¶®a±Ú°Q½×°Ï.¥Î¤ß¾Ç²ß·|¦³¶i¨Bªº)
¦ý¸ê·½µL­­,«á´©¦³­­,  ¤@¤Ñ1¤¸ªºÃÙ§U,¤H¤H¦³¯à¤O.

TOP

¦^´_ 8# Kubi

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


  ¦nªº~~~ÁÂÁÂK¤j©M­ã¤j~~
  §Ú¦AºCºC¬ã¨s
  ÁÂÁ§A­Ìªº¦^ÂÐ^^

TOP

Sub TEST()
Dim Arr, Brr, xD, T&, i&, j%, U&, N&
Arr = Range([A1], [A65536].End(xlUp)(1, 7))
Set xD = CreateObject("scripting.dictionary")
ReDim Brr(1 To UBound(Arr), 1 To 7)
For i = 2 To UBound(Arr)
¡@¡@T = Arr(i, 1): U = xD(T)
¡@¡@If U > 0 Then Brr(U, 5) = Brr(U, 5) + Arr(i, 5): GoTo 101
¡@¡@N = N + 1: U = N: xD(T) = N
¡@¡@For j = 1 To 7: Brr(U, j) = Arr(i, j): Next
101: Next i
If N > 0 Then [J1].Resize(N, 7) = Brr
End Sub

¦P¼ËÅÞ¿è¡A¤£¦P¼gªk¡A¦Û¦æ¥h´¢¼¯¡ã¡ã
¤Wºô¥h§ä ¦r¨åÀÉ ¤Î array°}¦C ªº¸ê®Æ¤Î»¡©ú¡AÁA¸Ñ¤F¡A¨ä¥¦³£Â²³æ¡I
¡@
¡@

TOP

¦^´_ 7# Changbanana
²³æ¨Ó»¡´N¬O±q¸ê®ÆºÝÂ^¨ú¬Y¦C¸ê®ÆÀx¦s©ó¤Gºû°}¦C(arr)¤¤³Æ¥Î¡C
¦Ü©ó ReDim ½Ð°Ñ¾\©x¤èª©»¡©ú(´å¼Ð°±¦bReDim¤å¦r¤¤«á¦A«öF1Áä)¡A·|¤ñ§Ú¸ÑÄÀªº§ó²M·¡¡C

TOP

¦^´_ 6# Kubi


·PÁÂk¤jªº¤j¤O¬Û§U~
¶]¥Xµ²ªG¬O¥¿½Tªº
·Q½Ð±Ð¤@¤U
  1.       ReDim Preserve arr(1 To 7, 1 To n)
  2.             For j = 1 To 7
  3.                 arr(j, n) = Cells(i, j).Value
  4.             Next j
½Æ»s¥N½X
³o­Ó¥Îªk¥i¤£¥i¥H¸Ñ»¡¤@¤U~ ÁÂÁ±z:)

TOP

¦^´_ 5# Changbanana
¸Õ¬Ý¬Ý¡C
µ²ªG·|¼g¦bI:OÄæ
  1. Sub test()
  2.     Dim arr()
  3.     Dim dic As Object
  4.     Set dic = CreateObject("scripting.dictionary")
  5.     For i = 2 To Range("A65536").End(3).Row
  6.         If dic.Exists(Cells(i, 1).Value) Then
  7.             dic(Cells(i, 1).Value) = dic(Cells(i, 1).Value) + Cells(i, 5).Value
  8.         Else
  9.             dic(Cells(i, 1).Value) = Cells(i, 5).Value
  10.             n = n + 1
  11.             ReDim Preserve arr(1 To 7, 1 To n)
  12.             For j = 1 To 7
  13.                 arr(j, n) = Cells(i, j).Value
  14.             Next j
  15.         End If
  16.     Next i
  17.     For i = 1 To n: arr(5, i) = dic(arr(1, i)): Next i
  18.     Columns("I:O").ClearContents
  19.     [I1].Resize(1, 7) = [A1].Resize(1, 7).Value
  20.     [I2].Resize(n, 7) = Application.Transpose(arr)
  21. End Sub
½Æ»s¥N½X

TOP

        ÀR«ä¦Û¦b : ¡i®É¤é²öªÅ¹L¡j¤@­Ó¤H¦b¥@¶¡°µ¤F¦h¤Ö¨Æ¡A´Nµ¥©ó¹Ø©R¦³¦hªø¡C¦]¦¹¥²¶·»P®É¶¡Ävª§¡A¤Á²ö¨Ï®É¤éªÅ¹L¡C
ªð¦^¦Cªí ¤W¤@¥DÃD