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

[µo°Ý] ¨â¤u§@ªí¤ñ¹ï ·s¼W­×§ï

[µo°Ý] ¨â¤u§@ªí¤ñ¹ï ·s¼W­×§ï

[ª©¥DºÞ²z¯d¨¥]
  • GBKEE(2014/1/11 13:28): ½ÐªþÀÉ»¡©ú

³o°ÝÃDÅý§Ú¦³ÂIÀY¤j@@

¾ãÅé§@·~¬yµ{¬O³o¼Ëªº

§Ú¦³2¥÷EXCEL(X,Y)¡A¥h°£±¼­«½Æ­È¦X¦¨1¥÷EXCEL(Z)
(X,Y->Z)

®æ¦¡Äæ¦ì³£¤@¼Ë

¥Ø«e§Ú¬O¥Î¥~³¡¸ê®Æªº¤è¦¡

¨C¦¸¥´¶}Z³£·|§ó·sX,Yªº¸ê®Æ

±NX,Yªº¸ê®Æ§ì¶iZªºsheet2,sheet3
(X=Zªºsheet2, Y=Zªºsheet3)

³o»ò°µ¬O·Q»¡§Ú¦bZ¤W§@·~´N¦n¤F

¦pªG³æ¯Â§âsheet2,sheet3ªº¸ê®Æ§ì¶isheet1,§R°£­«½Æ­È´N¬O§Ú­nªº¤F


¦ý²{¦b³Ì¤j°ÝÃD¬O
³Ì«á²£¥Xªºsheet1¦³´X­ÓÄæ¦ì·|Åý¨Ï¥ÎªÌ¶ñ¼g,¦ý³o¨ÇÄæ¦ì¬O¦bX,Yªº®É­Ô¤£¥Î¶ñ¼gªº
(³]©w¸ê®Æ³sµ²ªº®É­Ô¥u³]©wsheet2,sheet3·|°µªºÄæ¦ì,sheet1¤~·|¶ñ¼gªºÄæ¦ì¨S¦³°µ³sµ²,¦]¬°¦pªG³£°µ³sµ²¨º§ó·s«á´N·|ÅܪŪº)



³o¼Ëªº¸Ü§Ú¨C¦¸°µ¤@¦¸§ó·s¦X¨Ö
´N·|Åý­ì¥»¶ñ¼g¦bsheet1¤Wªº¸ê®Æ¿ù¶Ã±¼(¦]¬°sheet2,sheet3·|ÅÜ°Ê)

EX:
Äæ¦ì->            A            B               C(¦bsheet1®É¤~·|¿é¤J¸ê®Æ)

¦bsheet2       000        111     
¦bsheet3       222        333

>sheet1        000        111         AAA
                         222        333         BBB


<<§ó·s«á>>
Äæ¦ì->            A            B               C(¦bsheet1®É¤~·|¿é¤J¸ê®Æ)

¦bsheet2       000        111   
                         444        555
¦bsheet3       222        333

>sheet1        000        111         AAA
                         444        555         BBB   
                         222        333         



ªí¹F¤W¦³¨Ç½ÆÂø

¤£ª¾¦U¦ì¤j¤j¦³¨S¦³¤°»ò·Qªk¥i¥H§ïµ½

³Â·Ð¤F ÁÂÁ  :  )
¥Î¥\¨ì¥@¬É¥½¤é¨º¤@¤Ñ¡ã¡ã¡ã

ÁÂÁ¤j¤j

·íªì¦n¹³§â¬yµ{·Q±o¤Ó½ÆÂø «¢

«á¨Ó¦³¾ã²z¥X­Ó¤èªk

¥Ø«eÀ³¸Ó¥i¦æ

¤£ª¾¦³µL¨ä¥L¤è¦¡

ªþÀɬOª½±µ§âuserA,userB§ì¶i¨Ó¤F
(§â¥~³¡¸ê®Æ¨Ó·½¬Ù²¤)

Ä橳³¡¤ÀªºÄæ¦ì¬OMATCH«á¤~¶ñ¼gªº

userA,userB¤£¯à¶ñ
  1. Sub match_Click()
  2.    
  3.     'Copy userA
  4.     For i = 2 To Sheets(2).Range("A1").End(xlDown).Row
  5.         '§P§O¨Ó·½¦³µL­«½Æ,¥BMATCHªí¨S¦³ªº(¶K³Ì¤U­±)
  6.         If Application.match(Sheets(2).Range("D" & i), Sheets(2).Range("D:D"), 0) = i And _
  7.                 IsError(Application.match(Sheets(2).Range("D" & i), Range("D:D"), 0)) = True Then
  8.             userA_rows = Range("A65536").End(xlUp).Row + 1
  9.             Sheets(2).Range("A" & i & ":D" & i).Copy Range("A" & userA_rows & ":D" & userA_rows)
  10.         '§P§O¨Ó·½¦³µL­«½Æ,¥BMATCHªí¤W¦³ªº(¶K¦bMATCH¦ì¸m)
  11.         ElseIf Application.match(Sheets(2).Range("D" & i), Sheets(2).Range("D:D"), 0) = i And _
  12.                 IsError(Application.match(Sheets(2).Range("D" & i), Range("D:D"), 0)) = False Then
  13.             site_A = Application.match(Sheets(2).Range("D" & i), Range("D:D"), 0)
  14.             Sheets(2).Range("A" & i & ":D" & i).Copy Range("A" & site_A & ":D" & site_A)
  15.         End If
  16.     Next

  17.     'Copy userB
  18.     For j = 2 To Sheets(3).Range("A1").End(xlDown).Row
  19.         '§P§O¨Ó·½¦³µL­«½Æ,¥BMATCHªí¨S¦³ªº(¶K³Ì¤U­±)
  20.         If Application.match(Sheets(3).Range("D" & j), Sheets(3).Range("D:D"), 0) = j And _
  21.                 IsError(Application.match(Sheets(3).Range("D" & j), Range("D:D"), 0)) = True Then
  22.             userB_rows = Range("A65536").End(xlUp).Row + 1
  23.             Sheets(3).Range("A" & j & ":D" & j).Copy Range("A" & userB_rows & ":D" & userB_rows)
  24.         '§P§O¨Ó·½¦³µL­«½Æ,¥BMATCHªí¦³ªº(¶K¦bMATCH¦ì¸m)
  25.         ElseIf Application.match(Sheets(3).Range("D" & j), Sheets(3).Range("D:D"), 0) = j And _
  26.                 IsError(Application.match(Sheets(3).Range("D" & j), Range("D:D"), 0)) = False Then
  27.             site_B = Application.match(Sheets(3).Range("D" & j), Range("D:D"), 0)
  28.             Sheets(3).Range("A" & j & ":D" & j).Copy Range("A" & site_B & ":D" & site_B)
  29.         End If
  30.     Next

  31.     '»PuserA,userB¤ñ¹ï §R°£¨S¦³ªº
  32.     For x = 2 To Range("A1").End(xlDown).Row
  33.         If IsError(Application.match(Range("D" & x), Sheets(2).Range("D:D"), 0)) = True And _
  34.             IsError(Application.match(Range("D" & x), Sheets(3).Range("D:D"), 0)) = True Then
  35.             Rows(x).Delete
  36.         End If
  37.     Next
  38. End Sub
½Æ»s¥N½X
match.zip (20.51 KB)
¥Î¥\¨ì¥@¬É¥½¤é¨º¤@¤Ñ¡ã¡ã¡ã

TOP

¦^´_ 2# li_hsien

¬O¤ñ¹ï­«½ÆID¶Ü?½Ð»¡©ú­«½Æªº©w¸q
­n°O¿ýªº¬O¨C­ÓIDªº³Ì«á¥X²{ªº¸ê®Æ¡AÁÙ¬O³Ì¥ý¥X²{ªº¸ê®Æ?
¸Õ¸Õ¬ö¿ý³Ì«á¥X²{ªºID¸ê®Æ
  1. Sub ex()
  2. Dim Sh As Worksheet, A As Range
  3. Set dic = CreateObject("Scripting.Dictionary")
  4. For Each Sh In Sheets(Array("User A", "User B"))
  5. With Sh
  6.   For Each A In .Range(.[D1], .[D1].End(xlDown))
  7.   ar = Application.Transpose(Application.Transpose(A.Offset(, -3).Resize(, 4)))
  8.   mystr = Join(ar, Chr(10))
  9.      dic(A.Value) = Split(mystr, Chr(10))
  10.   Next
  11. End With
  12. Next
  13. Sheets("Match A & B").[A1].Resize(dic.Count, 4) = Application.Transpose(Application.Transpose(dic.items))
  14. End Sub
½Æ»s¥N½X
¾Ç®üµL²P_¤£®¢¤U°Ý

TOP

¦^´_ 3# Hsieh

¬O¥HID¬°¥D­n¤ñ¹ïªº¶µ¥Ø¨S¿ù

§âUSER A , USER B ·J¾ã¦¨MATCH  A & B
°ò¥»¤WUSER A »P USER B¸Ì­±¸ê®Æ­YID¤@¼Ë
¨ä¥LÄæ¦ì¤]³£·|¤@¼Ë
©Ò¥H¨ú¥ý¨ú«á³£¥i¥H

¥Ø«e§Ú¸I¤W¥D­nªº°ÝÃD¬OE,FÄæ¦ì
¬O¦bMATCH«á¤~·|¶ñ¼gªº

©Ò¥H¦bUSER A ©ÎUSER B¥[Äæ¦ì«á¦AMATCH
­ì¥ý¶ñ¦bE,FªºÄæ¦ì´N¤£¯à¹ï»ô¤F

¥B¦pªG¦AUSER A©ÎUSER B¦³§R°£«hMATCH¸Ì­±ªº¤]·|³Q§R°£(E,F¤]·|)

EX:

­ì¥»ªºMATCH

A            B            C                   D               E                        F
123       456       2013.01     AAA         TEST123         TEST456

¦bUSER¤¤¥[¤J¤@Äæ¦b­ì¥ýID AAAªº¤W­±
A            B            C                   D      
777       888       2013.02     BBB     
123       456       2013.01     AAA


«hMATCH«á·|Åܦ¨
A            B            C                   D               E                        F
777       888       2013.02     BBB          TEST123         TEST456
123       456       2013.01     AAA

¥¿½TÀ³¸Ó¬°
A            B            C                   D               E                        F
777       888       2013.02     BBB         
123       456       2013.01     AAA         TEST123         TEST456


¥Ø«e§ÚªþÀɪºµ{¦¡½X¦n¹³¥i¥H°µ¨ì

¦ý¤£ª¾O¤£OK

ÁÙ¬O¥t¦³§ó¦nªº§@ªk


ÁÂÁ¤j¤j :  )
¥Î¥\¨ì¥@¬É¥½¤é¨º¤@¤Ñ¡ã¡ã¡ã

TOP

  1. Sub ex()
  2. Dim A As Range, Sh As Worksheet
  3. Set d = CreateObject("Scripting.Dictionary")
  4. For Each Sh In Sheets(Array("User A", "User B", "Match A & B"))
  5. With Sh
  6.    For Each A In .Range(.[D1], .[D1].End(xlDown))
  7.       d(A.Value) = Application.Transpose(Application.Transpose(A.Offset(, -3).Resize(, 6).Value))
  8.    Next
  9. End With
  10. Next
  11. Sheets("Match A & B").[A1].Resize(d.Count, 6) = Application.Transpose(Application.Transpose(d.items))
  12. End Sub
½Æ»s¥N½X
¦^´_ 4# li_hsien
¾Ç®üµL²P_¤£®¢¤U°Ý

TOP

¦^´_ 5# Hsieh

½Ð°Ý¤j¤j

§Ú¤£¤ÓÀ´
Application.Transpose(Application.Transpose(A.Offset(, -3).Resize(, 6).Value))
ªº¥Î·N

¬°¤°»ò­n³s¥Î¨â¦¸Application.Transpose

¥B§Ú¬Ý¤£¥X­þ¤@¬q¬O¤ñ¹ï¨âªÌ¤£¦P
¶i¦æ·s¼W©Î§R°£ªº³¡¤À
¥Î¥\¨ì¥@¬É¥½¤é¨º¤@¤Ñ¡ã¡ã¡ã

TOP

¦^´_ 6# li_hsien

³o¬O§Q¥Î¦r¨åª«¥óªº¤£­«½Æ¯Á¤Þ¯S©Ê¡A±N©Ò¦³ªº¸ê®Æ¼g¤J¦r¨å¤º®e
¦]¬°Àx¦s®æ½d³ò³Qµø¬°¤Gºû°}¦C¡A¦ý¦]¬°³æ¦Cªº¸ê®Æ¥Îtranspose¨ç¼Æ°µ¤G¦¸Âà¸m¡A´N·|Åܦ¨¤@ºû°}¦C
±N³o¨Ç¤@ºû°}¦C¦s¤J¦r¨å¤º®e¡A¦r¨å¤º®e´N¬O¦h­Ó¤@ºû°}¦C©Ò²Õ¦¨¡A¦A¸g¹L¤G¦¸Âà¸m´N¥i¦¨¬°¯u¥¿ªº¤Gºû°}¦C
¦]¬°§Aªºmatch¤u§@ªí»Ý«O¯d­ì¤º®e¡A¦b³Ì«á¤~Ū¤J´N¤£·|³QA¡AB©ÒÂл\
¾Ç®üµL²P_¤£®¢¤U°Ý

TOP

¦^´_ 7# Hsieh

ª©¥D·N«ä¬OÀx¦s®æ¹ê»Ú¤W¬O¤Gºû
¦ý¦r¨åªº§Î¦¡¬O¤@ºû

©Ò¥H­n¥ýÂন¤@ºû©ñ¶i¦r¨å
¤§«á¦bÂà¤@¦¸Åܦ¨¤Gºû©ñ¶iÀx¦s®æ¤¤¶Ü???

¥H¤U¬O¦bÀx¦s®æ§e²{ªº¤è¦¡
A   B   C   D   E     ->Àx¦s®æ¤W³o¼Ë¬O¤Gºû??

A->³o¼Ë¬O¤@ºû¶Ü??
B
C
D
E
ÁÙ¬O«ç»ò§e²{³£µLÃö¡A¥u­n¬OÀx¦s®æ¤W¬Ò¬O¤Gºû???


ÁÂÁªO¤jªº¤£§[«ü±Ð
¥Î¥\¨ì¥@¬É¥½¤é¨º¤@¤Ñ¡ã¡ã¡ã

TOP

¦^´_ 8# li_hsien


    ¤@ºû°}¦C¬O«ü³æ¦C¸ê®Æªº¶°¦X¡A¬O¾î¦Vªº¡C
¨ä°}¦C¯Á¤Þ¼Ë¦¡¬°arr(0)
¤Gºû°}¦C«h¬°¦h¦C¡A©Ò¦³¸ê®Æ¤À§G¦¨­±¡C
¨ä°}¦C¯Á¤Þ¼Ë¦¡¬°arr(0¡A0)
¦]¬°Àx¦s®æ½d³ò¡AEXCEL·|µø¬°¤Gºû°}¦C
©Ò¥H¦pªGÀx¦s®æ½d³ò¬°³æ¦C¡A¦p[A1:F1]
¦pªG¤@¦¸Âà¸m¡A·|Åܦ¨ª½¦V°}¦C¡A¬O¤Gºû°}¦C
¦A¤@¦¸Âà¸m«á¡AÅܦ¨¾î¦V¡A´N¬O¤@ºû°}¦C¡C
¾Ç®üµL²P_¤£®¢¤U°Ý

TOP

¦^´_ 9# Hsieh

¦­¦w «¢«¢

§A¦n¦­³á

ÁÂÁªO¤jªº»¡©ú
¥Î¥\¨ì¥@¬É¥½¤é¨º¤@¤Ñ¡ã¡ã¡ã

TOP

        ÀR«ä¦Û¦b : §g¤l¬°¥Ø¼Ð¡A¤p¤H¬°¥Øªº¡C
ªð¦^¦Cªí ¤W¤@¥DÃD