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

[µo°Ý] ±N¦hµ§¦P³æ¸¹ªº¸ê®Æ©ñ¤J¤@­ÓÀx¦s®æ¤º,¸ê®Æ¤£­«½Æ¤Î¦h±ø¥ó¥[Á`

¦^´_ 1# yliu
¸Õ¸Õ¬Ý
  1. Option Explicit
  2. Sub EX_1()   'ªí1ªºµ{¦¡
  3.     Dim ­q³æ¸¹½X As String, ½ÐÁʳ渹 As String, ½ÐÁʼt°Ó As String
  4.     Dim AR(1 To 6), i As Integer
  5.     With Sheets("report")
  6.         ­q³æ¸¹½X = .[B5]
  7.         ½ÐÁʳ渹 = .[D5]
  8.         ½ÐÁʼt°Ó = .[B6]
  9.         With Sheets("final")
  10.             i = 2
  11.             Do While .Cells(i, "A") <> ""
  12.                 If .Cells(i, "v").Value = ­q³æ¸¹½X And .Cells(i, "F") = ½ÐÁʳ渹 And .Cells(i, "L") = ½ÐÁʼt°Ó Then
  13.                     AR(1) = .Cells(i, "j")                      '«~¦W
  14.                     AR(2) = AR(2) & IIf(AR(2) = "", "", ",") & .Cells(i, "k") '³W®æ
  15.                     AR(3) = .Cells(i, "i")                      '·|­p¬ì¥Ø
  16.                     AR(4) = .Cells(i, "b")                      '±ÄÁʩʽè
  17.                     AR(5) = AR(5) + .Cells(i, "m")                    'User½ÐÁÊ»ù
  18.                     AR(6) = .Cells(i, "c")                  '±ÄÁÊÃþ§O
  19.                 End If
  20.                 i = i + 1
  21.             Loop
  22.         End With
  23.         .[B7] = AR(1)
  24.         .[B8] = AR(2)
  25.         .[B9] = AR(3)
  26.         .[D9] = AR(4)
  27.         .[B10] = AR(5)
  28.         .[D10] = AR(6)
  29.      End With
  30. End Sub
  31. Sub EX_2()  'ªí1ªºµ{¦¡
  32.     Dim d As Object, KEY, i As Integer, AR(), A(1 To 4), ­q³æ¸¹½X As String
  33.     Set d = CreateObject("SCRIPTING.DICTIONARY")                   '¦r¨åª«¥ó Scripting.Dictionary
  34.     ­q³æ¸¹½X = Sheets("report").[B5]
  35.     With Sheets("record")
  36.         .AutoFilterMode = False                                     '¨ú®ø ¤u§@ªíªº¦Û°Ê¿z¿ï
  37.             i = 2
  38.             Do While .Cells(i, "A") <> ""
  39.                 If .Cells(i, "P").Value = ­q³æ¸¹½X Then             '¤ñ¹ï ­q³æ¸¹½X
  40.                     If d.exists(.Cells(i, "C").Value) = False Then d(.Cells(i, "C").Value) = .Cells(i, "C")
  41.                 End If
  42.                 i = i + 1
  43.             Loop
  44.             ReDim AR(1 To d.Count)                                  '­«¸m°}¦Cªº¤¸¯À¤W­­=¦r¨åª«¥óªº­p¼Æ(Count)
  45.            .Range("A1").AutoFilter 16, ­q³æ¸¹½X                     'AutoFilter ¦Û°Ê¿z¿ï ²Ä16Äæ «ü©w±ø¥ó­È=­q³æ¸¹½X
  46.            i = 1
  47.            For Each KEY In d.KEYS
  48.             .Range("A1").AutoFilter 3, KEY                          'AutoFilter ¦Û°Ê¿z¿ï ²Ä3Äæ «ü©w±ø¥ó­È=¦r¨åª«¥óªºKEY
  49.             A(1) = KEY                                                             '±ÄÁʼt°Ó
  50.             A(2) = Application.Sum(.Range("M:M").SpecialCells(xlCellTypeVisible))  '²Ä1¦¸Ä³»ù
  51.             A(3) = Application.Sum(.Range("N:N").SpecialCells(xlCellTypeVisible))  '²Ä2¦¸Ä³»ù
  52.             A(4) = Application.Sum(.Range("O:O").SpecialCells(xlCellTypeVisible))  '²Ä3¦¸Ä³»ù
  53.             AR(i) = A
  54.             i = i + 1
  55.         Next
  56.     End With
  57.     Sheets("report").[B13].Resize(4, 3) = Application.WorksheetFunction.Transpose(AR) '¾É¤J
  58. End Sub
½Æ»s¥N½X
·P®¦ªº¤ß......(¦b³Â»¶®a±Ú°Q½×°Ï.¥Î¤ß¾Ç²ß·|¦³¶i¨Bªº)
¦ý¸ê·½µL­­,«á´©¦³­­,  ¤@¤Ñ1¤¸ªºÃÙ§U,¤H¤H¦³¯à¤O.

TOP

¦^´_ 3# yliu
  1. Do While .Cells(i, "A") <> ""
  2.                 If .Cells(i, "v").Value = ­q³æ¸¹½X And .Cells(i, "F") = ½ÐÁʳ渹 And .Cells(i, "L") = ½ÐÁʼt°Ó Then
  3.                       '**********************************************************
  4.                     If AR(1) = "" Then
  5.                         AR(1) = .Cells(i, "J")                                                     '«~¦W
  6.                     Else
  7.                         M = Application.Match(.Cells(i, "J"), Split(AR(1), ","), 0)                 '´M§ä¬Û¦Pªº«~¦W
  8.                         If IsError(M) Then AR(1) = AR(1) & "," & .Cells(i, "J")                     '´M§ä¤£¨ì®É Match¶Ç¦^ ¿ù»~­È
  9.                     End If
  10.                  '*********************************************************   
  11.                     AR(2) = AR(2) & IIf(AR(2) = "", "", ",") & .Cells(i, "k") '³W®æ
  12.                     AR(3) = .Cells(i, "i")                      '·|­p¬ì¥Ø
  13.                     AR(4) = .Cells(i, "b")                      '±ÄÁʩʽè
  14.                     AR(5) = AR(5) + .Cells(i, "m")                    'User½ÐÁÊ»ù
  15.                     AR(6) = .Cells(i, "c")                  '±ÄÁÊÃþ§O
  16.                 End If
  17.                 i = i + 1
  18.             Loop
½Æ»s¥N½X
·P®¦ªº¤ß......(¦b³Â»¶®a±Ú°Q½×°Ï.¥Î¤ß¾Ç²ß·|¦³¶i¨Bªº)
¦ý¸ê·½µL­­,«á´©¦³­­,  ¤@¤Ñ1¤¸ªºÃÙ§U,¤H¤H¦³¯à¤O.

TOP

¦^´_ 6# yliu
¤W¶ÇÀɮ׬ݬÝ
·P®¦ªº¤ß......(¦b³Â»¶®a±Ú°Q½×°Ï.¥Î¤ß¾Ç²ß·|¦³¶i¨Bªº)
¦ý¸ê·½µL­­,«á´©¦³­­,  ¤@¤Ñ1¤¸ªºÃÙ§U,¤H¤H¦³¯à¤O.

TOP

¦^´_ 8# yliu
Àˬd¤@¤U:dicªº­Ó¼Æ,¦p¬°0®É­n¦³if ªº§PÂ_¦¡.
  1. MsgBox dic.Count            
  2.             ReDim AR2(1 To dic.Count)                                  '­«¸m°}¦Cªº¤¸¯À¤W­­=¦r¨åª«¥óªº­p¼Æ(Count)
½Æ»s¥N½X
·P®¦ªº¤ß......(¦b³Â»¶®a±Ú°Q½×°Ï.¥Î¤ß¾Ç²ß·|¦³¶i¨Bªº)
¦ý¸ê·½µL­­,«á´©¦³­­,  ¤@¤Ñ1¤¸ªºÃÙ§U,¤H¤H¦³¯à¤O.

TOP

¦^´_ 13# yliu
  1.   ReDim AR2(1 To dic.Count)
  2.             '­«¸m°}¦Cªº¤¸¯À¤W­­=¦r¨åª«¥óªº­p¼Æ(Count)
  3.            .Range("A1").AutoFilter 16, ­q³æ¸¹½X2                     'AutoFilter ¦Û°Ê¿z¿ï ²Ä16Äæ «ü©w±ø¥ó­È=­q³æ¸¹½X
  4.            i2 = 1
  5.            For Each KEY In dic.Keys
  6.                 .Range("A1").AutoFilter 3, KEY                          'AutoFilter ¦Û°Ê¿z¿ï ²Ä3Äæ «ü©w±ø¥ó­È=¦r¨åª«¥óªºKEY
  7.                 A(1) = KEY                                                             '±ÄÁʼt°Ó
  8.                 A(2) = Application.Sum(.Range("M:M").SpecialCells(xlCellTypeVisible))  '²Ä1¦¸Ä³»ù '¤w¥Î½d³òªº³Ì«á¤@­ÓÀx¦s®æ
  9.                 A(3) = Application.Sum(.Range("N:N").SpecialCells(xlCellTypeVisible))  '²Ä2¦¸Ä³»ù '¤w¥Î½d³òªº³Ì«á¤@­ÓÀx¦s®æ
  10.                 A(4) = Application.Sum(.Range("O:O").SpecialCells(xlCellTypeVisible))  '²Ä3¦¸Ä³»ù '¤w¥Î½d³òªº³Ì«á¤@­ÓÀx¦s®æ
  11.                 AR2(i2) = A
  12.                 i2 = i2 + 1
  13.             Next
  14.     End With
  15.     Sheets("report").[B13].Resize(4, dic.Count) = Application.WorksheetFunction.Transpose(AR2)  '¾É¤J
½Æ»s¥N½X
·P®¦ªº¤ß......(¦b³Â»¶®a±Ú°Q½×°Ï.¥Î¤ß¾Ç²ß·|¦³¶i¨Bªº)
¦ý¸ê·½µL­­,«á´©¦³­­,  ¤@¤Ñ1¤¸ªºÃÙ§U,¤H¤H¦³¯à¤O.

TOP

        ÀR«ä¦Û¦b : ¦n¨Æ­n´£±o°_¡A¬O«D­n©ñ±o¤U¡A¦¨´N§O¤H§Y¬O¦¨´N¦Û¤v¡C
ªð¦^¦Cªí ¤W¤@¥DÃD