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

[µo°Ý] ¦p¦ó¥[¸ê®Æ

³o­Ódictionary¨s³º¬O¤°»òªF¦è? ¦³¤°»ò§@¥Î? ·Pı«Ü¯«¯µ,¤@¯ëvba®Ñ³£¥¼¥²´£¤Î
80 ¦r¸`¥H¤º
¤£¤ä«ù¦Û©w¸q Discuz! ¥N½X

TOP

¥»©«³Ì«á¥Ñ FAlonso ©ó 2011-1-4 20:26 ½s¿è
  1. Sub abc()
  2. Dim myrange As Range, mystring(), count()
  3. Dim i, j, k As Integer
  4. Set myrange = Range("A1:D" & Range("A1").End(xlDown).Row)   '­pºâ¦r¥À¦êªºÁ`½d³ò
  5. i = myrange.Cells.count / 4        '­pºâ¦r¥À¦êªº¦C¼Æ

  6. ReDim mystring(i)          '§âmystringªºarray½Õ¸û¦Ü¦r¥À¦ê¦C¼Æ
  7. ReDim count(i)             '¨C¤@­Ó¦r¥À¦ê§¡³]¦³¤@­Ó­p¼Æ¾¹

  8. For j = 1 To i
  9. count(j) = 1   '¨C­Ó¦r¦ê§¡¥X²{¤@¦¸,©Ò¥H³]­p¼Æ¾¹¬°1
  10. Next

  11. For j = 1 To i      
  12. For k = 1 To 4
  13. mystring(j) = mystring(j) + myrange.Cells(j, k)   '§â¦r¦ê¿é¤Jmystring
  14. Next   '¦pmystring(1)¬OASDF,mystring(2)¬OASSS (½Ð°Ñ¦Ò¼Ó¥Dexcelªº¦r¥À)
  15. Next

  16. For j = 1 To i - 1
  17. For k = j + 1 To i

  18. If count(j) = 0 Then
  19. Exit For                      '­p¼Æ¾¹¬°0,§Y­«ÂЦr¥À§R±¼,¤£»Ý¦AÀˬd
  20. End If

  21. If mystring(j) = mystring(k) Then     '¤ñ¸ûmystring array¤¤ªº¦r¥À¦ê
  22. mystring(k) = vbnullstring   '§â­«ÂЪº¦r¥À·F±¼
  23. count(j) = count(j) + 1      '¬Û¦Pªº¸Ü,­p¼Æ¾¹¥[1
  24. count(k)=0   '±N­«ÂЪº¦r¥Àªº­p¼Æ¾¹µ¹Ãö±¼
  25. End If  
  26. Next                                                
  27. Next     

  28. Range("H1").Select
  29. For j = 1 To i
  30. If mystring(j) <> vbNullString Then       '¤£¬Ovbnullstring«K§Û¿ý¦bHÄæ
  31. ActiveCell.Value = Cells(j, 1)
  32. ActiveCell.Offset(, 1).Value = Cells(j, 2)
  33. ActiveCell.Offset(, 2).Value = Cells(j, 3)
  34. ActiveCell.Offset(, 3).Value = Cells(j, 4)
  35. ActiveCell.Offset(, 4).Value = count(j)
  36. ActiveCell.Offset(1).Activate
  37. End If
  38. Next

  39. End Sub
½Æ»s¥N½X
§Æ±æ°ª¤âµûµû§Ú³o­Ómacro
80 ¦r¸`¥H¤º
¤£¤ä«ù¦Û©w¸q Discuz! ¥N½X

TOP

§Ú°µ¤F¤@­Ó§¹¾ãªºµ{¦¡,¼Ó¥D¥i¥H¸Õ¸Õ,¤j®a¤]¥iµ¹·N¨£
¼g±o¯uºC,40´X¦æªá¤F¤@¤Ñ®É¶¡
80 ¦r¸`¥H¤º
¤£¤ä«ù¦Û©w¸q Discuz! ¥N½X

TOP

¦^´_  basarasy
³o¬O«Üª½Æ[ªº¥N½X
Hsieh µoªí©ó 2011-1-3 22:50


¨â¦¸¨Ï¥Îapplication.transpose¦³ÂIÃø¸Ñ,¼Æ¾Ç¤WÀ³¸Ó¨SÂàÅÜ,©Ò¿×ªº"¼Ð·Ç¤Gºû°}¦C"¬O¤°»ò
80 ¦r¸`¥H¤º
¤£¤ä«ù¦Û©w¸q Discuz! ¥N½X

TOP

¥»©«³Ì«á¥Ñ FAlonso ©ó 2011-1-8 20:25 ½s¿è

Ãö©ótranspose°ÝÃD....

¨Ò¦pexcel¦³¦p¤U±Æ¦C
    A    B    C    D
1  r
2  e
3  s
4  t

±N¤@­Ócolumnªº¦r³s¦ê:
transpose¤@¦¸

µ²ªG¬Or,e,s,t
  1. Sub abc()
  2. Dim mystring
  3. mystring = Join(Application.Transpose(Range("A1:a4").Value), ",")  'ª`·N³o¸Ì¬O¤@­Ócolumn¦ê

  4. Range("A10").Value = mystring

  5. End Sub
½Æ»s¥N½X
±N¤@­Órowªº¦r³s¦ê:
transpose¤G¦¸

  A    B    C    D
1  r   t    u    i
  1. Sub abc()
  2. Dim mystring
  3. mystring = Join(Application.Transpose(Application.Transpose(Range("A1:D1"))), ",") 'ª`·N³o¸Ì¬O¤@­Órow¦ê

  4. Range("A10").Value = mystring

  5. End Sub
½Æ»s¥N½X
µ²ªG¬Or,t,u,i

¤µ¤é°µ¤F¤@ÂI¸Ô²Ó¬ã¨s,¬O¤gªk¤jÁå¿û
¥ý§â¥H¤Uµ{¦¡§Û¶iVBA
  1. Sub check()
  2. Dim ar As Variant
  3. Dim i As Integer

  4. Set ar = [a1:a4]   'try [a1:d1] later

  5. For i = 1 To 6
  6. ar = Application.Transpose(ar)
  7. Next

  8. Set ar = Nothing

  9. End Sub
½Æ»s¥N½X
¥´¶}À˵ø->°Ï°ìÅܼƵøµ¡,¦A«öF8,³v¦æ°õ¦æ,Æ[¹îar°}ªº¸ê®Æ

¥ý¬Ý[a1:a4],¤@­Ócolumnªºrange
¬O¤@­Ó2D°}¦C(¬Ý¬õ¦â°é¤l), variant(1 to 4,1 to 1)

transpose¤@¦¸«á,Åܦ¨¤F¤@­Ó1D°}¦C, variant(1 to 4),³o­Ó¬O¥i¥H¶i¤Jjoin()µ{¦¡ªºªFªF

¤£½×¦A¦p¦ótranspose,³£¥u·|­«ÂÐvariant(1 to 4,1 to 1) -> variant(1 to 4) -> variant(1 to 4,1 to 1) ³o­Ó´`Àô

¦A¬Ý[a1:d1](¦Û¤v§âµ{¦¡­×§ï),¤@­Órowªºrange
¬O¤@­Ó2D°}¦C, variant(1 to 1,1 to 4),³o¸Ì¤£¦Aprint screen¤F,¤j®a¦Û¤v¬Ý¬Ý
transpose¤@¦¸«á,Åܦ¨¥t¥~¤@­Ó2D°}¦C,¥svariant(1 to 4,1 to 1),³o¼Ë¬O¤£¯à¶i¤Jjoinµ{¦¡
transpose²Ä¤G¦¸,«KÅܤFvariant(1 to 4),¥i¥H¤F!
¦ý¤§«áµL½×«çtranspose,³£¥u·|­«ÂÐvariant(1 to 4,1 to 1) -> variant(1 to 4) -> variant(1 to 4,1 to 1) ³o­Ó´`Àô,¥Ã»·¤£·|Åܦ^variant(1 to 1,1 to 4)³o­Ó³]©w

¥´­Ó¤ñ³ë,´Nµ¥¦p¤@­Ó2-D rowªº°}¦C,­º¥ýÅܤF"Ãþ¦ü"2-D columnªº§ÎºA,¦AÅÜ1-D array
¦Ó2-D column´N°¨¤WÅܤF1-D array
³o¼ËÀ³¸Ó¯à°÷¸ÑÄÀ¬°¤°»òrow­ntranspose¦h¤@¦¸,¦ýrow¬°¤°»ò­n­º¥ýÅܦ¨column§Î,¤£­n°Ý§Ú

³Ì«ád1.items¨º¦æ
¬Ý¥H¤U¨Ò¤l
  1. Dim myrange As Range
  2. Dim i As Integer, k
  3. Set myobject = CreateObject("scripting.dictionary")

  4. myobject("A") = Array(1, 2)
  5. myobject("B") = Array(4, 5)
  6. myobject("C") = Array(7, 8)

  7. Set myrange = Worksheets("sheet2").Range("A1").Resize(3, 2)

  8. k = myobject.items
  9. k = Application.Transpose(Application.Transpose(k))
  10. myrange = k
½Æ»s¥N½X
¦b§¹¦¨myobject°t¸m«á,°Ï°ìÅܼƪºÅã¥Ü«ü¸Óª«¥ó©|¥¼¬Oarray(¨S¦³¨º¨Çvariant(x,y),¯Âºé¬O«Ü´²ªº¬[ºc)
§âmyobject.items¥s¥X¨Ó,«K¬Ý¨ìk¦³variant(0,2)ªº1D§ÎºA(3­Ó¯Á¤Þ,"A","B","C")
¥´¶}kªº"+"Áä,·|¬Ý¨ìk(0),k(1),k(2)¦U¦Û³£¦³variant(0,1)ªº1D§ÎºA(§Y¨C­Ó¯Á¤Þ¤¤ªº¨â­Ó¼Æ¦rªºªí¥Ü)
transpose()¤@¦¸,«K·|¦¨¤@­Óvariant(1 to 2,1 to 3)ªº2D°}¦C
¨ä¹ê¦¹®É¤w¸g¥i¥H¶K¤W®æ¤lÅo!¸Õ§âresize(3,2)Åܦ¨(2,3)¬Ý¬Ý!
¤£¹L¦]¬°§Ú­Ì·Q±Æ¦¨
      A       B
1    1       2
2    4       5
3   7        8
©Ò¥H¦Atranspose¤@¦¸¦Ó¤w
80 ¦r¸`¥H¤º
¤£¤ä«ù¦Û©w¸q Discuz! ¥N½X

TOP

¦^´_ 19# Hsieh
¨º»ò¥¿½Tªººû¼Æ¨ä¹ê¬O«ç¼Ë©w¸q? ·Q¨Ó·Q¥h³£·Q¤£³q
¦b§Úªº¥Ü½d,Range("A1:A4")ºâ¤£ºâ¬O¤@­Ó°}¦C?
¬°¤°»ò¥´ª½ªº®æ¤l,¤@¦¸transpose´N¥i¥H,¥´¾îªº­n¨â¦¸? §Ú¸Õ¹L¥´ª½ªº¥Î¨â¦¸transpose,·|¦³¿ù»~¥X²{

ÁÙ¦³
  1. d(mystr) = d(mystr) + A.Offset(, 4).Value
½Æ»s¥N½X
³o¥y¬O«ç¸ÑÄÀ,¬°¤°»ò¥i¥H§@²Ö¥[ªº§@¥Î
¬O§_dictionary¦Û°Ê´N¬Oarray,¤£»Ýdeclare(§Y¹³´¶³qªºÅܼƭn§@x()³o¼Ëªº«Å§i))?

§Æ±æH¤j¸Ñµª
80 ¦r¸`¥H¤º
¤£¤ä«ù¦Û©w¸q Discuz! ¥N½X

TOP

²Ä¤G­Ó°ÝÃD¥ýÀÁ¤U¤£ªí
²Ä¤T­Ó°ÝÃD¬O§_«ü¥ý§âmystrª`¥U¦bdictionaryªºindex,d(mystr),¦Ó¸Óindexªºdefault¸ê®Æ¬° = 0(§Y d(mystr)=0), ¦A¤Þ¥Hoffset(,4)­p¼Æ?ÁÙ¦³dictionary·Ó²z»¡À³¸Ó¬O´XD array?

·Pı·U¨Ó·Uªñ¯u¬Û!
80 ¦r¸`¥H¤º
¤£¤ä«ù¦Û©w¸q Discuz! ¥N½X

TOP

¦^´_ 26# Hsieh
¦hÁÂH¤j«üÂI,²{¦b²×©ó§¹¥þ¸Ñ³q¤F
¥t¥~¦b#18,§Ú·s¼W¤F¤@¨Çµ§°O,§Æ±æ¥H«á¹ï¥L¤H¦³¥Î
80 ¦r¸`¥H¤º
¤£¤ä«ù¦Û©w¸q Discuz! ¥N½X

TOP

        ÀR«ä¦Û¦b : ¤@­Ó¤H¤£©È¿ù¡A´N©È¤£§ï¹L¡A§ï¹L¨Ã¤£Ãø¡C
ªð¦^¦Cªí ¤W¤@¥DÃD