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

[µo°Ý] excel VBA ±q¤j¶q¸ê®Æ¤¤¸Ì§ä¥X¦@¦P­«½Æªº¸ê®Æ

¥»©«³Ì«á¥Ñ GBKEE ©ó 2016-1-1 10:16 ½s¿è

¦^´_ 12# yen956
vbaªº»¡©ú
  1. Dictionary ª«¥ó
  2. ª«¥ó¡A¥Î©óÀx¦s¸ê®ÆÃöÁä¦r©M¶µ¥Ø¹ï¡C
  3. »yªk
  4. Scripting.Dictionary
  5. ½Ðª`·N
  6. Dictionary ª«¥ó»P PERL ¬ÛÃö°}¦C¥þµ¥¡C¥i¥H¬O¥ô¦ó«¬¦¡ªº¸ê®Æªº¶µ¥Ø³QÀx¦s¦b°}¦C¤¤¡C¨C­Ó¶µ¥Ø³£»P¤@­Ó°ß¤@ªºÃöÁä¦r¬ÛÃö¡C¸ÓÃöÁä¦r¥Î¨Ó¨ú¥X³æ­Ó¶µ¥Ø¡A³q±`¬O¾ã¼Æ©Î¦r¦ê¡A¥i¥H¬O°£°}¦C¥~ªº¥ô¦ó«¬ºA¡C
  7. ¤U­±ªºµ{¦¡½XÁ|¨Ò»¡©ú¤F¦p¦ó«Ø¥ß¤@­Ó Dictionary ª«¥ó¡G

  8. Dim d                   '«Ø¥ß¤@­ÓÅܼÆ
  9. Set d = CreateObject(Scripting.Dictionary)
  10. d.Add "a", "Athens"     '¥[¤J¤@¨ÇÃöÁä¦r©M¶µ¥Ø
  11. d.Add "b", "Belgrade"
  12. d.Add "c", "Cairo"
½Æ»s¥N½X
9#ªþÀɪºµ{¦¡½X¸Õ¸Õ¬Ý
  1. Option Explicit
  2. Sub Ex()
  3.     Dim d As Object, E As Variant, AR(1 To 3), i As Integer
  4.     Dim Rng As Range, AX(), M As Variant
  5.     Set d = CreateObject("SCRIPTING.DICTIONARY")
  6.     '¤u§@ªí1-> ¤u§@ªí3  '¥X²{¾÷²v¬°80%ªº¦r¥À*****
  7.     For i = 1 To 3   '"¤u§@ªí1"->"¤u§@ªí3" ¦b¬¡­¶Ã¯¤Wªº Index
  8.          MsgBox Sheets(i).Name  '¥iµù¸Ñ±¼
  9.         With Sheets(i).Range("B:B").SpecialCells(xlCellTypeConstants).Offset(, 1)
  10.             .Cells = "=COUNTIF(C2,RC[-1])/COUNTA(C1)"  'Àx¦s®æ¼g¤W¤½¦¡
  11.             AR(i) = Application.WorksheetFunction.Transpose(.Offset(, -1).Resize(, 2).Value)
  12.             'AR(i) ¾É¤J­^¤å¦r¥À¥X²{¦Ê¤À¤ñ¾÷²v
  13.             For Each E In .Cells
  14.                 If E >= 0.8 Then d(E.Offset(, -1).Value) = ""
  15.             Next
  16.             .Cells = .Value             '¤½¦¡Âର­È
  17.             .NumberFormatLocal = "0%"   '¼Æ¦r®æ¦¡¤Æ
  18.             .Cells.Offset(, 1) = ""
  19.             If d.Count >= 1 Then
  20.                 .Cells(1).Range("B1").Resize(d.Count) = Application.WorksheetFunction.Transpose(d.keys)
  21.             End If
  22.         End With
  23.         d.RemoveAll
  24.     Next
  25.    
  26.     '***¤u§@ªí4 ¤WBÄæ¦ì¤¤¡A¨C­Ó­^¤å¦r¥À¥X²{¦b«ü©w¤u§@ªíªº¤ñ²v***
  27.     Set Rng = Sheets("¤u§@ªí4").Range("A1")
  28.     i = 0
  29.     Do Until Rng Is Nothing
  30.         AX = AR(Sheets(Rng.Value).Index) '"¤u§@ªí1"->"¤u§@ªí3" ¦b¬¡­¶Ã¯¤Wªº Index
  31.         'AR(Sheets(Rng.Value).Index) ¾É¥X¦U­Ó¤u§@ªí¤W­^¤å¦r¥Àªº¾÷²v
  32.         M = Application.Match(Rng.Offset(i, 1), Application.Index(AX, 1), 0)
  33.         'Application.Match ¤u§@ªí¨ç¼Æ
  34.         With Rng.Offset(i, 2) 'CÄæ
  35.             If Not IsError(M) Then
  36.                 .Cells = AX(2, M)
  37.             Else
  38.                 .Cells = 0
  39.             End If
  40.             .NumberFormatLocal = "0%"
  41.         End With
  42.         i = i + 1
  43.         If Rng.Offset(i) <> "" Then  '¤U¤@­Ó¤u§@ªí
  44.             Set Rng = Rng.Offset(i)
  45.             i = 0
  46.         ElseIf Rng.Offset(i, 1) = "" Then '¨S¦³¦r¦ê
  47.             Set Rng = Nothing   'Â÷¶}°j°éªº±ø¥ó
  48.         End If
  49.     Loop
  50. End Sub
½Æ»s¥N½X
·P®¦ªº¤ß......(¦b³Â»¶®a±Ú°Q½×°Ï.¥Î¤ß¾Ç²ß·|¦³¶i¨Bªº)
¦ý¸ê·½µL­­,«á´©¦³­­,  ¤@¤Ñ1¤¸ªºÃÙ§U,¤H¤H¦³¯à¤O.

TOP

        ÀR«ä¦Û¦b : µÊ®ð¼L¤Ú¤£¦n¡A¤ß¦a¦A¦n¤]¤£¯àºâ¬O¦n¤H¡C
ªð¦^¦Cªí ¤W¤@¥DÃD