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

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

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

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

¦^´_ 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 : ¡i®É¶¡¦¨´N¤@¤Á¡j®É¶¡¥i¥H³y´N¤H®æ¡A¥i¥H¦¨´N¨Æ·~¡A¤]¥i¥HÀx¿n¥\¼w¡C
ªð¦^¦Cªí ¤W¤@¥DÃD