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

½Ð±Ð¸ê®Æ·J¾ã°ÝÃD

¦^´_ 2# Hsieh


    ÁÂÁ«e½ú
¤Ó¼F®`¤F!«á¾Çı±o«ÜÃø!
«á¾Ç¦b¦¹©«¾Ç¨ì«Ü¦hª¾ÃÑ!
±N¤ß±o¦b¦¹µù¸Ñ¤@¤U
¦p¦³«_¥Ç½Ð¨£½Ì!¤]Àµ½Ð«e½ú«ü¥¿¨Ã«ü¾É!

Sub Ex_Hsieh()
Dim Sh As Worksheet, Ar(), A As Range, B As Range, C As Range, s&, i%
'¡ô«Å§iÅܼÆ

Set d = CreateObject("Scripting.Dictionary")
'¡ô¥Od ¬O¦r¨å

Set d1 = CreateObject("Scripting.Dictionary")
'¡ô¥Od1 ¬O¦r¨å

For Each Sh In Sheets(Array("Sheet1", "Sheet2", "Sheet3", "Sheet4"))
'¡ô³]¥~°j°é,¥O Sh ¬O4­Ó¤u§@ªí¤§¤@,¶¶µÛ¶]

   With Sh
   '¡ô¥H¤UÃö©óSh ¤u§@ªíªºµ{§Ç
   
      Set C = IIf(i = 0 Or i = 2, .[A1], .[C1])
      '¡ô¥OCÀx¦s®æª«¥óÅܼÆ:¦pªGi³oÅܼƬO0©Î2, CÀx¦s®æ=Shªº[A1]Àx¦s®æ
      ',¦pªGi³oÅܼƤ£¬O0©Î2, CÀx¦s®æ=Shªº[C1]Àx¦s®æ

      
      For Each A In .Range(C, .[IV1].End(xlToLeft))
      '¡ô³]¤¤°j°é,¥OA Àx¦s®æª«¥óÅܼƬO??
      '·íi=0(ªì©l­È):C¬O[A1]Àx¦s®æ,.[IV1].End(xlToLeft)¬O²Ä¤@¦C³Ì¥ªÃ䪺Àx¦s®æ
      '©Ò¥HA ¬O Sheet1 ªº[A1:H1]ªºÀx¦s®æ¤§¤@

      
         ReDim Preserve Ar(s)
         '¡ô½Õ¾ãAr°}¦C¤j¤p¡A«O¯d°}¦C¤º³¡¸ê®Æ
         '¤@¶}©lAr ¬O¤@ºû°}¦C,sªì©l­È¬O0,Ar(0) ¬O¨S¦³¸ê®Æ

         
         Ar(s) = A.Value
         '¡ô¥OAr¬O¼ÐÃD¦Cªº­È
         
         s = s + 1
         '¡ô¥O²Ö¥[1,ÅýAr°}¦C©¹¥k ±Æ¤J¼ÐÃD¦Cªº­È
         
         DDD = .Range(A.Offset(1, 0), .Cells(65536, A.Column).End(xlUp)).Address
         For Each B In .Range(A.Offset(1, 0), .Cells(65536, A.Column).End(xlUp))
         '¡ô³]¤º°j°é,¥O BÀx¦s®æª«¥óÅܼÆ:A¼ÐÃD¦C®æ°¾¤U1®æ¨ì ·íÄ檺³Ì«á¤@®æ
         '·íi=0(ªì©l­È);Sh=Sheet1;A=[A1];B=[A2:A105]
         '©Ò¥H B Sheet1 ªº[A2:A105]ªºÀx¦s®æ¤§¤@

         
            If i = 0 Then
            '¡ô¦pªGi¬Oªì©l­È0,¤]´N¬O¤u§@ªí¬O Sheet1 ®É
            '¥Øªº¬O­n¦¬¶°¼ÐÃDÄæ¨âÄ檺­È»P ¤é´Á&ªÑ¥N¸¹&¼ÐÃD¦C®æ ©é¦r¦êªºkey,Item¬O CreditMoneyÄæ­È

            
               d1(.Cells(B.Row, 1) & .Cells(B.Row, 2)) = Array(.Cells(B.Row, 1), .Cells(B.Row, 2))
               '¡ô±ø¥ó¦¨¥ß®É d1¦r¨å¸Ë¤J ¤é´Á&ªÑ¥N¸¹ ©é¦r¦êªº key ,Item¬O®Ô¤¸¯Àªº¤@ºû°}¦C ¤é´Á;ªÑ¥N¸¹
               
               d(.Cells(B.Row, 1) & .Cells(B.Row, 2) & A) = B.Value
               '¡ô±ø¥ó¦¨¥ß®É d¦r¨å¸Ë¤J ¤é´Á&ªÑ¥N¸¹&¼ÐÃD¦C®æ ©é¦r¦êªºkey,Item¬O CreditMoneyÄæ­È
               
               ElseIf d1.exists(.Cells(B.Row, 1) & .Cells(B.Row, 2)) = True Then
               '¡ô¦pªGi¤£¬O¬Oªì©l­È0:¤u§@ªí¤£¬O Sheet1 ®É
               ',¦Ó¥B d1¦r¨å¸Ì¦³ ¤é´Á&ªÑ¥N¸¹ ©é¦r¦êªº key®É

                  
                  d(.Cells(B.Row, 1) & .Cells(B.Row, 2) & A) = B.Value
                  '¡ô±ø¥ó¦¨¥ß®É d¦r¨å¸Ë¤J ¤é´Á&ªÑ¥N¸¹&¼ÐÃD¦C®æ ©é¦r¦êªºkey,Item¬O CreditMoneyÄæ­È
                  
            End If
         Next
      Next
      i = i + 1
   End With
Next
With Sheet5
'¡ô¥H¤UÃö©ó ²Ä5­Ó¤u§@ªíªºµ{§Ç

   .Cells = ""
   '¡ô¥O©Ò¦³Àx¦s­Ó³£¬OªÅ¦r¤¸
   
   .[A1].Resize(, s) = Ar
   '¡ô§â¦¬¶°¨ìªºAr¼ÐÃD¤@ºû°}¦C±q[A1]¶}©lªºÀx¦s®æ©ñ¶i­È
   
   r = d1.Count
   '¡ô¥Or ¬Od1¦r¨å¸Ì¤¸¯À¼Æ¶q104
   
   .[A2].Resize(d1.Count, 2) = Application.Transpose(Application.Transpose(d1.items))
   '¡ô§â¦¬¶°¨ìd1¦r¨åªºitem(¨âÄæ¼ÐÃD) ±q[A2]¶}©lªºÀx¦s®æ©ñ¶i­È
   
   For Each C In .Range(.[C1], .[IV1].End(xlToLeft))
   '¡ô³]¥~°j°é¥O CÀx¦s®æª«¥óÅܼƬO Sheet5 ªº[C1:AK1]ªºÀx¦s®æ¤§¤@
   '¤]´N¬Oµ²ªGªíªº¼Ð´£¦CÀx¦s®æ

      
      For Each A In C.Offset(1, 0).Resize(d1.Count, 1)
      '¡ô³]¤º°j°é¥O AÀx¦s®æª«¥óÅܼƬO C¼ÐÃD¦CÀx¦s®æ°¾¤U¤@®æ¶}©l,
      '©¹¤U¦J¦C (d1¦r¨å¸Ì¤¸¯À¼Æ¶q) ªºÀx¦s®æ 104®æ ªºÀx¦s®æ¤§¤@

      
         A = d(.Cells(A.Row, 1) & .Cells(A.Row, 2) & C)
         '¡ô¥Î¨â¼ÐÃDÄæ¨â®æ­È»P¼ÐÃD¦C®æ©éªº¦r¦ê·íkey,
         '½Õ¥Xd¦r¨å¸ÌªºItem ­È©ñ¨ìÀx¦s®æ²z

         
      Next
   Next
End With
End Sub

TOP

¦^´_ 2# Hsieh

ÁÂÁ«e½ú¤À¨É §â¦r¨å¤¤ªºitem¤@ºû°}¦C Âà¦Ü¶K¤J¤u§@ªí
D1(.Cells(B.Row, 1) & .Cells(B.Row, 2)) = Array(.Cells(B.Row, 1), .Cells(B.Row, 2))
~~~
.[A2].Resize(d1.Count, 2) = Application.Transpose(Application.Transpose(d1.items))
³o«Ü¹ê¥Î!
ÁÂÁÂ!

TOP

¦U¦ì«e½ú¦n
«á¾Ç¤µ¤Ñ¹B¥Î¤F¨â¥DÃDªº­«­n§Þ¥©,«÷´ê¥X¤U¦C½d¨Ò
http://forum.twbts.com/thread-22560-1-1.html
»P¥»¥DÃD
http://forum.twbts.com/thread-513-1-1.html
Book1_20001017_7.zip (33.21 KB)
Àµ½Ð«e½ú­Ì«ü¥¿»P«ü¾É! ÁÂÁÂ
°õ¦æ«e:


°õ¦æ«á:

TOP

¥»©«³Ì«á¥Ñ Andy2483 ©ó 2022-10-17 13:53 ½s¿è

ÁÂÁÂ Hsieh «e½ú
ÁÂÁÂ n7822123 «e½ú
¥H¤U¤ß±oµù¸Ñ,Àµ½Ð«e½ú­Ì«ü¥¿»P«ü¾É!
Option Explicit
Sub TEST()
Dim Arr, Brr, C&, i&, R&, T, Y, Z, Q
Set Y = CreateObject("Scripting.Dictionary")
Sheets("Sheet5").Cells = ""
'¡ô¥O ¤u§@ªí "Sheet5" ©Ò¦³Àx¦s­Ó³£¬OªÅ¦r¤¸
''''''''''''''''''''''''''''''''''''''''''''''''''''''

With Sheets("Sheet1")
   Set Brr = .[A1].CurrentRegion
  '¡ô¥O Brr¬O [A1]¬Û¾F«DªÅ®æ©Ò¦ê³s°_¨ÓªºÀx¦s®æ,ÂX®i¨ì¤è¥¿°Ï°ìªº³Ì¤p½d³òÀx¦s®æ
   C = .[A1].End(xlToRight).Column
   '¡ô¥OC¬O¦¹ªíªºÄæ¼Æ
   R = .[A1].End(xlDown).Row
   '¡ô¥OR¬O¦¹ªíªº¦C¼Æ
End With
For i = 1 To R
'¡ô³]°j°é§â¤@ºû°}¦C­Ë¤J¦r¨å¸Ì·íitem
   T = Brr(i, 1)
   Q = Brr(i, 2)
   Arr = Brr(i, 1).Resize(, C)
   Arr = Application.Transpose(Application.Transpose(Arr))
   Y(T & "|" & Q) = Arr
   '¡ô¥O¦¹KEYªºITEM¬OArr¤@ºû°}¦C
Next
With Sheet5
   .[A1].Resize(Y.Count, C) = Application.Transpose(Application.Transpose(Y.items))
   '¡ô§âY¦r¨åªº¤@ºû°}¦CITEM­È±q[A1]¶}©l¶K¤J
End With
''''''''''''''''''''''''''''''''''''''''''''''''''''''
With Sheets("Sheet2")
   Set Brr = .Range(.[D1], .[A1].End(xlDown))
   C = .[A1].End(xlToRight).Column - 2
   R = .[A1].End(xlDown).Row
End With
For Each Z In Y.KEYS
'¡ô³]°j°é§âitemªº¤@ºû°}¦C§ïÅÜ°}¦C¤j¤p
'³o¸Ì«Ü­«­n!
'¦]¬°¦pªG³Ì«áÂà¸m¶K¤W®É!¦r¨åITEMªº¶°¦X¤£¬O¤è¥¿ªº
'´N¨S¿ìªkÂà¸m¶K¤W

   Y(Z) = Array("", "")
Next
For i = 1 To R
'¡ô³]°j°é§â¤@ºû°}¦C­Ë¤J¦r¨å¸Ì·íitem
   T = Brr(i, 1)
   Q = Brr(i, 2)
   Arr = Brr(i, 3).Resize(, C)
   Arr = Application.Transpose(Application.Transpose(Arr))
   If Y.Exists(T & "|" & Q) Then
   '¡ô¦pªG²Õ¦X¦r¦ê¦b¦r¨å¸Ì¦³!
      Y(T & "|" & Q) = Arr
      '¡ô±ø¥ó¦¨¥ß´N¥O¦¹KEYªºITEM¬OArr¤@ºû°}¦C
   End If
Next
With Sheet5
   .[I1].Resize(Y.Count, C) = Application.Transpose(Application.Transpose(Y.items))
   '¡ô§âY¦r¨åªº¤@ºû°}¦CITEM­È±q[I1]¶}©l¶K¤J
End With
''''''''''''''''''''''''''''''''''''''''''''''''''''''
With Sheets("Sheet3")
   Set Brr = .Range(.[K1], .[A1].End(xlDown))
   C = .[A1].End(xlToRight).Column
   R = .[A1].End(xlDown).Row
End With
For Each Z In Y.KEYS
'¡ô³]°j°é§âitemªº¤@ºû°}¦C§ïÅÜ°}¦C¤j¤p
'³o¸Ì«Ü­«­n!
'¦]¬°¦pªG³Ì«áÂà¸m¶K¤W®É!¦r¨åITEMªº¶°¦X¤£¬O¤è¥¿ªº
'´N¨S¿ìªkÂà¸m¶K¤W

   Y(Z) = Split(",,,,,,,,,,", ",")
Next
For i = 1 To R
'¡ô³]°j°é§â¤@ºû°}¦C­Ë¤J¦r¨å¸Ì·íitem
   T = Brr(i, 1)
   Q = Brr(i, 2)
   Arr = Brr(i, 1).Resize(, C) '
   Arr = Application.Transpose(Application.Transpose(Arr))
   If Y.Exists(T & "|" & Q) Then
   '¡ô¦pªG²Õ¦X¦r¦ê¦b¦r¨å¸Ì¦³!
      Y(T & "|" & Q) = Arr
      '¡ô±ø¥ó¦¨¥ß´N¥O¦¹KEYªºITEM¬OArr¤@ºû°}¦C
   End If
Next
With Sheet5
   .[K1].Resize(Y.Count, C) = Application.Transpose(Application.Transpose(Y.items))
   '¡ô§âY¦r¨åªº¤@ºû°}¦CITEM­È±q[K1]¶}©l¶K¤J
End With
''''''''''''''''''''''''''''''''''''''''''''''''''''''
With Sheets("Sheet4")
   Set Brr = .Range(.[R1], .[A1].End(xlDown))
   C = .[A1].End(xlToRight).Column - 2
   R = .[A1].End(xlDown).Row
End With
For Each Z In Y.KEYS
'¡ô³]°j°é§âitemªº¤@ºû°}¦C§ïÅÜ°}¦C¤j¤p
'³o¸Ì«Ü­«­n!
'¦]¬°¦pªG³Ì«áÂà¸m¶K¤W®É!¦r¨åITEMªº¶°¦X¤£¬O¤è¥¿ªº
'´N¨S¿ìªkÂà¸m¶K¤W

   Y(Z) = Split(",,,,,,,,,,,,,,,", ",")
Next
For i = 1 To R
   T = Brr(i, 1)
   Q = Brr(i, 2)
   Arr = Brr(i, 3).Resize(, C)
   Arr = Application.Transpose(Application.Transpose(Arr))
   If Y.Exists(T & "|" & Q) Then
   '¡ô¦pªG²Õ¦X¦r¦ê¦b¦r¨å¸Ì¦³!
      Y(T & "|" & Q) = Arr
     '¡ô±ø¥ó¦¨¥ß´N¥O¦¹KEYªºITEM¬OArr¤@ºû°}¦C
   End If
Next
With Sheet5
   .[V1].Resize(Y.Count, C) = Application.Transpose(Application.Transpose(Y.items))
  '¡ô§âY¦r¨åªº¤@ºû°}¦CITEM­È±q[V1]¶}©l¶K¤J
End With
Set Arr = Nothing
Set Brr = Nothing
Set Y = Nothing
End Sub

TOP

¥»©«³Ì«á¥Ñ Andy2483 ©ó 2022-10-17 14:58 ½s¿è

¦U¦ì«e½ú¦n:
«á¾Çµo²{¤@­Ó«Ü¦³·N«äªº²{¶H
½Ð±Ð¦U¦ì«e½ú³o¬O¤°»òÅÞ¿è?

1.¤£Âà¸m¶K¤J¨S¦³¸ê®Æ
.[V1].Resize(Y.Count, C) = Y.items

2.Âà¸m¤@¦¸!¸ê®Æ¬O¾î©ñ
.[V1].Resize(Y.Count, C) = Application.Transpose(Y.items)

3.Âà¸m¨â¦¸¤~·|¬O§Ú­Ì­nªº¸ê®Æ!
.[V1].Resize(Y.Count, C) = Application.Transpose(Application.Transpose(Y.items))

4.Âà¸m¤T¦¸¦P2.
.[V1].Resize(Y.Count, C) = Application.Transpose(Application.Transpose(Application.Transpose(Y.items)))

5.Âà¸m4¦¸¤S¦P3.
.[V1].Resize(Y.Count, C) = Application.Transpose(Application.Transpose(Application.Transpose(Application.Transpose(Y.items))))

¤@¶}©l¥¼Âà¸mªº¸ê®Æ¬O¤°»ò¼Ëªºª¬ºA?
¬°¤°»ò¤£¯àª½±µ¶K¤W´N¦n?ÁÙ­nÂà¸m¨â¦¸?¤~¬O§Ú­Ì­nªº¸ê®Æ?
ÁÂÁ«e½ú­Ì«üÂI!
¤j·§¥u¦³«á¾Ç³oºØ¶Ì¤l¤~·|¥h¸ÕÂà4¦¸ªºµ²ªG!
«¢!

TOP

¥»©«³Ì«á¥Ñ Andy2483 ©ó 2022-10-19 08:11 ½s¿è

¦^´_ 13# shuo1125


    ÁÂÁÂ shuo1125 «e½ú
«Ü¦³¹D²z¼Ú!
" item¬O¤@ºû°}¦C¡A¬°¤ô¥­±Æ¦C¡A¦ý¸Ó½d¨Ò¤¤¹ïÀ³¤£¤î¤@­Óitem¡A"
1.¦pªG item¤@ºû°}¦C¡A¦bªÅ¶¡·§©À¬O¤ô¥­X¶b¤è¦V±Æ¦C
2.½d¨Ò¤¤¹ïÀ³¤£¤î¤@­Óitem,²qitem»PitemÀ³¸Ó¬OªÅ¶¡Z¶b¤è¦V±Æ¦C
3.©Ò¥H¥ýÂà¸m¤@¦¸Åý©Ò¦³¤¸¯À¨Ö¦¨¤@­Ó¤Gºû°}¦C,¨Ã¥B¶X¶b±ÛÂà90«×
4.²Ä¤G¦¸Âà¸m¬O¶Z¶b
5.¦pªG¬O²Ä¤T¦¸Âà¸m¤]¬O¶Z¶b
6.¦pªG¬O²Ä¥|¦¸Âà¸m¦A¬O¶Z¶bÂà¦^¨Ó
7. itemÂà¸m¬°°}¦C§Þ¥©·|¨Ï¥Î¤ñ¸û­«­n!¯u²z¯dµ¹°ª¤â¸Ñµª!
¥ç®v¥ç¤Í ÁÂÁÂ

¥H¤U¬O²q´úªº¥Ü·N¹Ï!½Ð«e½ú­Ì«ü¥¿¨Ã«ü¾É!ÁÂÁÂ!
¨C­ÓÃC¦â¥Nªí¨C­Ó  item¤@ºû°}¦C:


¨Ö¦¨¤@­Ó¤Gºû°}¦C!¶X¶b±ÛÂà90«×:


²Ä¤G¦¸Âà¸m¬O¶Z¶b:


¦pªG¬O²Ä¤T¦¸Âà¸m¤]¬O¶Z¶b


¦pªG¬O²Ä¥|¦¸Âà¸m¦A¬O¶Z¶bÂà¦^¨Ó

TOP

¦^´_ 13# shuo1125

¥H¤U¨âºØ¤è¦¡¦b¸ê®Æ¤Öªº®É­Ô¥Î! ¸ê®Æ¦h´N¥Î§Oªº¤è¦¡¨ú¥N¥¦!
¤Ó¯Ó®É¶¡¤F!

1.¦h¦¸ ´£¨ú°}¦CªºÄæ/¦C:Application.Index()
2.¦h¦¸ °}¦CªºÂà¸m:Application.Transpose()

TOP

¦^´_ 16# shuo1125
¤À¨É«e½ú¤ß±o
http://forum.twbts.com/viewthrea ... mp;extra=#pid119783
¤W¦C³sµ²¸Ìªº¾Ç²ß¦³´ú¸Õ¨ì
¦pªG­nÂà¸m¦r¨åªºitem¤@ºû°}¦C¦¨¬°¤Gºû°}¦C!¥²¶·­n©Ò¦³item¤@ºû°}¦C§¹¾ã!

Sub TEST()
Workbooks.Add
[A1].Resize(1, 5) = Array("¦X­p", , , , 5000)
End Sub
¤W­z¤@¯ëªº¤@ºû°}¦C¼g¤JÀx¦s®æ¬O¥i¥Hªº!

¦ý¬O©ñ¤J¦r¨å¸Ìªº¤@ºû°}¦C¸Ì¤¤¶¡3­ÓªÅ¤¸¯À«o¬O¤£³Q©Ó»{
¦p¤U:
TT = "Á`­p"
Y(TT) = Array(TT, , , , V)

ÁöµM¨S¦³¿ìªk°õ¦æ!

¦ý¬O¥H¤U¤è¦¡¬O¥i¥Hªº!
TT = "Á`­p,,,," & V
Y(TT) = Split(TT, ",")
'¡ô¥Î","¤À³Î¦r¦ê


¥H¤U¤è¦¡¤]¥i¥H
TT = "Á`­p"
Y(TT) = Array(TT, "", "", "", V)

TOP

        ÀR«ä¦Û¦b : ±o²z­nÄǤH¡A²zª½­n®ð©M¡C
ªð¦^¦Cªí ¤W¤@¥DÃD