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

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

¥»©«³Ì«á¥Ñ yen956 ©ó 2015-12-31 20:12 ½s¿è

¦^´_ 4# Hsieh
¶Wª©§A¦n!!
½Ð°Ý: If Application.CountIf(Rng, a) > 1 Then d(a.Value) = ""
¤¤ªº d(a.Value) = "" ¬O¤°»ò·N«ä?
²q·Q¬O±N a ªº Key ¥á¨ì¦r¨å¤¤, ©Î¬O±N a ªº Item ¥á¨ì¦r¨å¤¤,
¦ý¬°¤°»ò¬O d(a.Value) = "" ©O? §@¥Î¬O¤°»ò?
ÁÂÁÂ!!

TOP

·PÁÂc_c_lai, GBKEE, ­ã´£³¡ªL µ¥¤j¤jªº»¡©ú,
¦]¬°¤@¯ë¤å¥ó¥u´£¨ì d.Add "a", "Athens" ªº¤èªk,
²{¦bÁ`ºâª¾¹D d(a.Value) = "" ³o­Ó¤èªkªº¯u¥¿¨ç¸q,
d(a.Value) = ""¡@¡Ä¡Äkey ¬° a.value¡@¡A¡@item ¬° ªÅ¦r²Å
ÁÂÁ¤j¤j­Ì¸Ô²Óªº»¡©ú, ÁÂÁÂ!!

TOP

ªá¤F¤£¤Ö®É¶¡, Á`ºâ¹ï Ditionary ¦³¤@ÂIÂI¤F¸Ñ,
d(a.Value) = ""  »P
If Not exists(a.Value) Then d.Add a.Value, "" ¦P¸q.
¤U¦C­×§ï¦Û 15# GBKEEª©¤jªºVBA(ª©¤jªº°õ¦æµ²ªG§¹¥þ¥¿½T),
½Ð«ü±Ð!!
  1. '­×§ï¦Û 15# GBKEEª©¤jªºVBA
  2. Sub Test()
  3.     Dim d As Object, d2 As Object, AR(1 To 3), ArC()
  4.     Dim M As Variant, E As Variant
  5.     Dim LstA As Integer, LstB As Integer, Cnt As Integer, Cnt2 As Integer
  6.     Dim i As Integer, J As Integer
  7.     Set d = CreateObject("SCRIPTING.DICTIONARY")
  8.     Set d2 = CreateObject("SCRIPTING.DICTIONARY")
  9.     Range("C:G").ClearContents    '²M°£¤u§@ªí4 CÄæ-->GÄæ
  10.     Range("E:E").Interior.ColorIndex = xlNone
  11.     LstB = [B65536].End(xlUp).Row
  12.     Cnt = 1
  13.     Cnt2 = 1
  14.     ArC = Array(35, 36, 37, 38)
  15.    
  16.     '¥H¤U­pºâ ¤u§@ªí1-> ¤u§@ªí3 ¥X²{¾÷²v¬°80%ªº¦r¥À*****
  17.     For i = 1 To 3   '±q "¤u§@ªí1" ¨ì "¤u§@ªí3"
  18.         Sheets(i).Range("C:E").ClearContents    '²M°£¨C¤@­¶ªº CÄæ-->EÄæ
  19.         With Sheets(i).[C1].Resize(Sheets(i).[B65536].End(xlUp).Row)   '§Y[C1:Cxx]
  20.             .Cells = "=COUNTIF(C2,RC[-1])/COUNTA(C1)"
  21.             '[C1]¤½¦¡ = COUNTIF(B:B,B1)/COUNTA(A:A), §Y­pºâ¨C­Ó¦r¥À¥X²{ªº¾÷²v
  22.             
  23.             AR(i) = Application.Transpose(.Offset(, -1).Resize(, 2).Value)
  24.             '±N BÄæ,CÄæ Âà¸m¬° AR(1 to 2, 1 to 21)
  25.             
  26.             '±N­^¤å¦r¥À¥X²{¦Ê¤À¤ñ¾÷²v¾É¤J AR(i)
  27.             For Each E In .Cells    '¾ú¹M¨C¤@­¶ªº [C1:Cxx]
  28.                 d2.Item(E.Offset(, -1).Value) = E.Value
  29.                 '±N¦r¥À(Key)¤Î¾÷²v(Item)¥þ³¡¦s¤J ¦r¨åd2 ¤¤(¤£½×¾÷²v¤j¤p)
  30.                
  31.                 If E >= 0.8 Then d(E.Offset(, -1).Value) = E.Value
  32.                 '±N¾÷²v >=80% ªº¦r¥À¤Î¾÷²v, ©ñ¨ì ¦r¨åd ¤¤
  33.             Next
  34.             
  35.             .Cells = .Value             '¤½¦¡Âର­È
  36.             
  37.             If d.Count >= 1 Then
  38.                 .Cells(1).Range("B1").Resize(d.Count) = Application.Transpose(d.keys)   '¶É­Ë¦r¥À¨ì¨C­¶ªº [D1:Dxx]
  39.                 .Cells(1).Range("C1").Resize(d.Count) = Application.Transpose(d.Items)  '¶É­Ë¾÷²v¨ì¨C­¶ªº [E1:Exx]
  40.                 '¡¹³o¸Ì­Y±N .Range("B1") §ï¬° .[B1]
  41.                 '  «h·|¥X²{ "ª«¥ó¤£¤ä´©ÄݩʩΤèªk" ªº¿ù»~!!
  42.             End If
  43.             
  44.             If d2.Count >= 1 Then
  45.                 '©T©w¦¡(¤u§@ªí4ªºAÄæ¤ÎBÄ檺ªí®æ¨Æ¥ý¶ñ¦n)
  46.                 '***¤u§@ªí4¤W BÄæ¦ì¤¤¡A¨C­Ó­^¤å¦r¥À¥X²{¦b«ü©w¤u§@ªíªº¤ñ²v***
  47.                 M = Application.Match(Sheets(i).Name, [A:A])
  48.                 If IsNumeric(M) Then
  49.                     If i = 3 Then
  50.                         LstA = LstB
  51.                     Else
  52.                         LstA = Cells(M, 1).End(xlDown).Row - 1
  53.                     End If
  54.                     For J = M To LstA
  55.                         If d2.Exists(Cells(J, 2).Value) Then
  56.                             Cells(J, 3) = d2(Cells(J, 2).Value)
  57.                         End If
  58.                     Next
  59.                     Cnt = LstA + 1
  60.                 End If
  61.             
  62.                 '¾÷°Ê¦¡(EÄæ(¤u§@ªí¦WºÙ)¤ÎFÄæ(¦r¥À)ªºªí®æ¥ÑVBA¶ñ¤J)
  63.                 '***¤u§@ªí4¤W FÄæ¦ì¤¤¡A¨C­Ó­^¤å¦r¥À¥X²{¦b«ü©w¤u§@ªíªº¤ñ²v***
  64.                 Cells(Cnt2, 5) = Sheets(i).Name    '¤u§@ªí¦WºÙ
  65.                 Cells(1).Range("E" & Cnt2).Resize(d2.Count).Interior.ColorIndex = ArC(i)
  66.                 Cells(1).Range("F" & Cnt2).Resize(d2.Count) = Application.Transpose(d2.keys)   '¶É­Ë¦r¥À
  67.                 Cells(1).Range("G" & Cnt2).Resize(d2.Count) = Application.Transpose(d2.Items)  '¶É­Ë¾÷²v
  68.                 Cnt2 = d2.Count + 1
  69.             End If
  70.         End With
  71.         d.RemoveAll
  72.         d2.RemoveAll
  73.         Sheets(i).Range("C:C", "E:E").NumberFormatLocal = "0%"  '¼Æ¦r®æ¦¡¤Æ
  74.     Next
  75.     Range("C:C", "G:G").NumberFormatLocal = "0%"  '¼Æ¦r®æ¦¡¤Æ
  76. End Sub
½Æ»s¥N½X

TOP

        ÀR«ä¦Û¦b : ­n¥Î¤ß¡A¤£­n¾Þ¤ß¡B·Ð¤ß¡C
ªð¦^¦Cªí ¤W¤@¥DÃD