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

[µo°Ý] vbaªº¿z¿ï¥\¯à (¨ú®ø³¡¤À¿z¿ï)

¦^´_ 13# wei9133

¼Ó¥D»Ý¨Dªº¿z¿ï¼Ò¦¡¦b¦P¤@sheet¬OµLªk°õ¦æªº(ikboy¤w¸g»¡©ú¤F)
¦pªG¥u¬O­n­pºâ¦U¬P¶H³Ó²v/±Ñ§½«Øij¥i¥Î¤ñ¹ïªº
¥u¬OµLªk¬Ý¥X³o2¦U°Ï¶ô(A~AW)¤º¸ê®Æªº¬ÛÃö©Ê&³Ó²v/±Ñ§½­pºâ¤è¦¡??

TOP

¦^´_ 23# wei9133

1.megaªºÀɮצ]¤½¥q­­¨îµLªk¤U¸ü,©Ò¥H¨Ï¥Î«e­±ªºÀɮפº®e¼g
2.A~CV+¬P¶H ¬Û¦Pªº¦C²Î­p¨ä³Ó³õ&±Ñ§½(¨Ï¥ÎÀɮפºÄæ¦ìªº­È²Ö­p)
3.«O¯dªº¦C³Ó³õ¦h¥[1
4.³Ó³õ¬°ªÅ¥Õªº¶ñ¤J1,µø³Ó³õ¬°1
5.µ{¦¡µL°õ¦æ§R°£¦Cªº°Ê§@,±N¸ê®Æ¦C¦b[a400]¦ì¸m
¥H¤W¬O§Ú¯à²z¸Ñªº³¡¥÷

Sub ex3()
Dim d As Object, ar As Object, r As Object
Dim i%, AA$, a

Set d = CreateObject("Scripting.Dictionary")
Set ar = [A1].CurrentRegion

For i = 1 To ar.Rows.Count
   AA = Join(Application.Transpose(Application.Transpose(ar(i, 1).Resize(, 100))), ",") & "," & ar(i, 104) '«Ø¥ß§PÂ_±ø¥ó
   If ar(i, 101) = "" Then ar(i, 101) = 1 '³Ó³õªÅ¥Õ¶ñ¤J1
   If Not d.exists(AA) Then   '¦r¨å¤º¬dµL¸Ó±ø¥ó
      d(AA) = ar(i, 1).Resize(, 104) '¼W¥[¦r¨å¸ê®Æ
   Else
      a = Application.Transpose(Application.Transpose(d(AA)))   '±N¦r¨å¸ê®Æ¨ú¥X
      a(101) = a(101) + ar(i, 101) '³Ó²v²Ö¥[
      a(102) = a(102) + 1           '³Æµù:¬Û²Åªºµ§¼Æ(¤£¥]§t²Ä¤@µ§)
      a(103) = a(103) + ar(i, 103) '±Ñ§½²Ö¥[
      d(AA) = a   '±N¸ê®Æ©ñ¦^¦r¨å
   End If
Next
[a400].Resize(d.Count, 104) = Application.Transpose(Application.Transpose(d.items)) '±N¦r¨å¸ê®Æ¦C¥X
For Each r In Range([cw401], [cw401].End(4))  '«O¯d³Ó³õ+1
   r.Value = r.Value + 1
Next
Set d = Nothing
End Sub

TOP

¦^´_ 26# wei9133

¸ê®Æ§ï©ñ¸m©ó²Ä¤G­ÓSheet
Sub ex3()
Dim d As Object, ar As Object, r
Dim i%, AA$, a
Application.ScreenUpdating = False
Set d = CreateObject("Scripting.Dictionary")
Set ar = Sheets("¹ï¾Ô²Î­p").[a1].CurrentRegion

For i = 1 To ar.Rows.Count
   AA = Join(Application.Transpose(Application.Transpose(ar(i, 1).Resize(, 102))), ",") & "," & ar(i, 106) '«Ø¥ß§PÂ_±ø¥ó
   If Not d.exists(AA) Then   '¦r¨å¤º¬dµL¸Ó±ø¥ó
      a = Application.Transpose(Application.Transpose(ar(i, 1).Resize(, 115)))
      If a(103) = "" Then a(103) = 1 '³Ó³õªÅ¥Õ¶ñ¤J1
      d(AA) = a '±N¸ê®Æ©ñ¦^¦r¨å
   Else
      a = Application.Transpose(Application.Transpose(d(AA)))   '±N¦r¨å¸ê®Æ¨ú¥X
      If ar(i, 103) = "" Then a(103) = a(103) + 1 Else a(103) = a(103) + ar(i, 103) '³Ó³õªÅ¥Õ³Ó³õ²Ö¥[1,¤£¬OªÅ¥Õ«h±NÄæ¦ì­È¬Û¥[
      a(105) = a(105) + ar(i, 105) '±Ñ§½²Ö¥[
      For Each r In Array(104, 107, 109, 115) '±N³Æµù,DC,DE,DKÄæ¦ì¸ê®Æ¦X¨Ö
         If a(r) <> "" And ar(i, r) <> "" Then '¦pªG¦r¨å»PÄæ¦ì³£¦³¸ê®Æ,¨Ï¥Î","¬Û³s
            a(r) = a(r) & "," & ar(i, r)
         ElseIf a(r) = "" And ar(i, r) <> "" Then '¦pªG¦r¨å¸ê®Æ¬°ªÅ¥Õ,Äæ¦ì¬O¦³¸ê®Æªº,¨Ï¥ÎÄæ¦ì¸ê®Æ
            a(r) = ar(i, r)
         End If
      Next
      d(AA) = a   '±N¸ê®Æ©ñ¦^¦r¨å
   End If
Next
With Sheets(2)  '¦b²Ä¤G­ÓSheet¶ñ¤J¸ê®Æ
.[a1].CurrentRegion.Clear '²M°£Sheet¸ê®Æ
.[a1].Resize(d.Count, 115) = Application.Transpose(Application.Transpose(d.items)) '±N¦r¨å¸ê®Æ¦C¥X
For Each r In .Range(.[cy2], .[cy2].End(4))  '«O¯d³Ó³õ+1
   r.Value = r.Value + 1
Next
End With
Set d = Nothing
Application.ScreenUpdating = True
End Sub

TOP

¦^´_ 29# wei9133

³Ó²v­pºâ¬O§_¬°¨S¦³­«½Æªº´N¤£¦h¥[1³õ¶Ü??
¦]¬°§Aªº³Ó³õºâªk³£¤£¤@¼Ë
¥H§A¦b#30¼Óªº¶K¹Ï
¤HÃþ4³õ³Ó²v¬°(1,2,ªÅ,ªÅ),³Ó²vÀ³¬°1+2+1+1=5«O¯d¦A¥[1,©Ò¥H¬°6
¦ý¤O¶q­^¶¯2³õ³Ó²v¬°(ªÅ,3),³Ó²vÀ³¬°1+3=4«O¯d¦A¥[1,©Ò¥H¬°5,¦ýµ¹ªº¥¿½T³Ó²v«o¬°3

(#23¼Ó:¦Ó³Ó³õ³¡¥÷ªº­È«h¤À§O¬°3¡BªÅ®æ¡B1¡A±Ñ³õªº­È«h¬°1¡BªÅ®æ¡BªÅ®æ
  ºâ¥X¨Ó¦X¨Öªº³Ó³õÄæ¦ìÀ³¬°"6"¡A±Ñ³õ«h¬°"1"
   ºâªk¬O³o¼Ëªº¡A°²³]3¨º®æ«O¯d¡A¦ÓªÅ®æ¥Nªí³Ó1³õ¡A³Ó³õ¶ñ¤J1ªº¹ê»Ú¤W¬O"·í¦C"¥["³Ó1³õ"
   ©Ò¥H¥[¥X¨Ó¬O"6")
³Ó³õ(3,ªÅ,1)=6,¦pªG¥HªÅ¬°1,¹ê»Ú¤]¬O5,¦hªº1³õ¤£´N¬O¦Ó¥~¼W¥[ªº¶Ü??

¥t¥~¸ê®Æ©ñ¸m¨ä¥LSheet¬O¤£¥h§ïÅܭ즳¸ê®Æ¥H«KÅçÃÒ,¦Ó¥Bµ{¦¡µù¸Ñ¤]¦³¼g©ñ¸m©ó²Ä¤G­ÓSheet
¦p­n§ï©ñ©ó¨ä¥L¦ì¸m©Î°µªk,µ{¦¡¤¤³£¦³µù¸Ñ,½Ð¦Û¦æ·L½Õ,ÁÂÁÂ!!

TOP

¦^´_ 33# wei9133

#33
¦³2³õ¤@¼Ë(³Ó²vÄ欰"ªÅ","ªÅ")¦X¨Ö³Ó²v¬°1
¥u¦³1³õ(³Ó²vÄ欰"ªÅ")³Ó²v¬°"ªÅ"

´XºØª¬ªp¦p¦ó­pºâ
2³õ(³Ó²v¬°"3","ªÅ")¦X¨Ö³Ó²v??(¬O§_¬°4)
3³õ(³Ó²v¬°"3","ªÅ","ªÅ")¦X¨Ö³Ó²v??(¬O§_¬°4)
3³õ(³Ó²v¬°"ªÅ","ªÅ","ªÅ")¦X¨Ö³Ó²v??(¬O§_¬°1)
3³õ(³Ó²v¬°"3","1","ªÅ")¦X¨Ö³Ó²v??(¬O§_¬°5)
4³õ(³Ó²v¬°"ªÅ","3","1","ªÅ")¦X¨Ö³Ó²v??(¬O§_¬°5)
¥u¦³¤@³õ¬O§_³Ó²vÄæ¦ì³£¤£ÅÜ
¦h³õªº¥u­n³Ó²v¬°ªÅªº¤£ºÞ´X³õ³£¥uºâ1³õ³Ó³õ,¨ä¾l³Ó²vÄ榳­Èªºª½±µ²Ö¥[­È

TOP

¦^´_ 33# wei9133

1.¸ê®Æ¦ì¸m©ñ¸m²Ä¤G­Ósheet,½Ð¦Û¦æ­×§ï©ñ¸m¦ì¸m
2.³Ó³õ­pºâ¤è¦¡
-->¥u¦³1µ§¸ê®Æ,³Ó³õ³£¤£ÅÜ°Ê
-->2µ§¥H¤W¸ê®Æ,©Ò¦³ªº"ªÅ"³£ºâ¼W¥[1³õ,¦³­Èªºª½±µ²Ö¥[

Sub ex4()
Dim d As Object, ar As Object, r
Dim i%, AA$, a
Application.ScreenUpdating = False
Set d = CreateObject("Scripting.Dictionary")
Set ar = Sheets("¹ï¾Ô²Î­p").[a1].CurrentRegion

For i = 1 To ar.Rows.Count
   AA = Join(Application.Transpose(Application.Transpose(ar(i, 1).Resize(, 102))), ",") & "," & ar(i, 106) '«Ø¥ß§PÂ_±ø¥ó
   If Not d.exists(AA) Then   '¦r¨å¤º¬dµL¸Ó±ø¥ó
      a = Application.Transpose(Application.Transpose(ar(i, 1).Resize(, 115)))
      ReDim Preserve a(1 To UBound(a) + 2)
      If a(103) = "" Then a(UBound(a) - 1) = 1 '¬ö¿ý³Ó³õªÅ¥Õ¼Æ
      a(UBound(a)) = 1 '¬ö¿ýµ§¼Æ
      d(AA) = a '±N¸ê®Æ©ñ¦^¦r¨å
   Else
      a = Application.Transpose(Application.Transpose(d(AA)))   '±N¦r¨å¸ê®Æ¨ú¥X
      If ar(i, 103) = "" Then a(UBound(a) - 1) = a(UBound(a) - 1) + 1 Else a(103) = a(103) + ar(i, 103) '³Ó³õªÅ¥Õ¬ö¿ý²Ö¥[1,¤£¬OªÅ¥Õ«h±NÄæ¦ì­È¬Û¥[
      a(UBound(a)) = a(UBound(a)) + 1 ''¬ö¿ýµ§¼Æ+1
      a(105) = a(105) + ar(i, 105) '±Ñ§½²Ö¥[
      For Each r In Array(104, 107, 109, 115) '±N³Æµù,DC,DE,DKÄæ¦ì¸ê®Æ¦X¨Ö
         If a(r) <> "" And ar(i, r) <> "" Then '¦pªG¦r¨å»PÄæ¦ì³£¦³¸ê®Æ,¨Ï¥Î","¬Û³s
            a(r) = a(r) & "," & ar(i, r)
         ElseIf a(r) = "" And ar(i, r) <> "" Then '¦pªG¦r¨å¸ê®Æ¬°ªÅ¥Õ,Äæ¦ì¬O¦³¸ê®Æªº,¨Ï¥ÎÄæ¦ì¸ê®Æ
            a(r) = ar(i, r)
         End If
      Next
      d(AA) = a   '±N¸ê®Æ©ñ¦^¦r¨å
   End If
Next
With Sheets(2)  '¦b²Ä¤G­ÓSheet¶ñ¤J¸ê®Æ
.[a1].CurrentRegion.Clear '²M°£Sheet¸ê®Æ
.[a1].Resize(d.Count, UBound(a)) = Application.Transpose(Application.Transpose(d.items)) '±N¦r¨å¸ê®Æ¦C¥X
For Each r In .Range(.[cy2], .[cy65535].End(3))
   If r.Offset(, 14) > 1 And r.Offset(, 13) > 0 Then r.Value = r.Value + 1 '2µ§¸ê®Æ¥H¤W¥B¦³³Ó³õ¬°"ªÅ"ªº³Ó³õ+1
Next
i = .[a1].CurrentRegion.Columns.Count
.Range(Cells(1, i - 1), Cells(65535, i).End(3)).Clear '²M°£ªÅ¥Õ&¸ê®Æ­pºâµ§¼Æ
End With
Set d = Nothing
Application.ScreenUpdating = True
End Sub

TOP

¥»©«³Ì«á¥Ñ jcchiang ©ó 2020-10-29 11:31 ½s¿è

¦^´_ 44# wei9133

1.¨º¬qµ{¦¡§Ú°õ¦æ¨S¦³°ÝÃD(¥u¬O²M°£­p¼Æ¸ê®Æ,·sªºµ{¦¡¤w¤£»Ý­n)
2.¥u­n¬O¥u¦³1¦Cªººû«ù­ì¸ê®Æ
   ²Ä¤G¦C¶}©l,°£³Ó²vÄæ¦ì¼Æ­È²Ö¥[,¨C¦C¦A¥[1(²Ä¤@¦C¤£¥[)
¶È1¦CµL¨ä¥L¬Û¦PªÌ (¸Ó®æ³Ó²v¬° "3")
Á`¦@³Ó4³õ¡A¦X¨Ö«á³Ó²vÄæ¼Ð°O¬° 3³õ
-->1¦Cªººû«ù­ì¸ê®Æ

¶È1¦CµL¨ä¥L¬Û¦PªÌ (¸Ó®æ³Ó²v¬° "ªÅ")
Á`¦@³Ó1³õ¡A¦X¨Ö«á³Ó²vÄæ¼Ð°O¬° ªÅ³õ
-->1¦Cªººû«ù­ì¸ê®Æ

¦@2¦C¬Û¦P ³Ó²v¬° "2","ªÅ"
Á`¦@³Ó4³õ¡A¦X¨Ö«á³Ó²vÄæ¼Ð°O¬° 3³õ
-->2¦C¥H¤W("2"+"(0+1)"=3)

¦@2¦C¬Û¦P ³Ó²v¬° "ªÅ","ªÅ"
Á`¦@³Ó2³õ¡A¦X¨Ö«á³Ó²vÄæ¼Ð°O¬° 1³õ
-->2¦C¥H¤W("0"+"(0+1)"=1)

¦@2¦C¬Û¦P ³Ó²v¬° "2","1"
Á`¦@³Ó5³õ¡A¦X¨Ö«á³Ó²vÄæ¼Ð°O¬° 4³õ
-->2¦C¥H¤W("2"+"(1+1)"=4)

¦@3¦C¬Û¦P ³Ó²v¬° "2","ªÅ","1"
Á`¦@³Ó6³õ¡A¦X¨Ö«á³Ó²vÄæ¼Ð°O¬° 5³õ
-->2¦C¥H¤W("2"+"(0+1)","(1+1)"=5)

¦@4¦C¬Û¦P ³Ó²v¬° "7","ªÅ","3","ªÅ"
Á`¦@³Ó14³õ¡A¦X¨Ö«á³Ó²vÄæ¼Ð°O¬° 13³õ
-->2¦C¥H¤W("7"+"(0+1)"+"(3+1)"+"(0+1)"=13)
¦pªGÁÙ¬O¤£¹ï,½Ð¼g­pºâ¤½¦¡(¥u¼g´X³õ«ÜÃø²z¸Ñ)

Sub ex5()
Dim d As Object, ar As Object, r
Dim i%, AA$, a
Application.ScreenUpdating = False
Set d = CreateObject("Scripting.Dictionary")
Set ar = Sheets("¹ï¾Ô²Î­p").[a1].CurrentRegion
For i = 1 To ar.Rows.Count
   AA = Join(Application.Transpose(Application.Transpose(ar(i, 1).Resize(, 102))), ",") & "," & ar(i, 106) '«Ø¥ß§PÂ_±ø¥ó
   If Not d.exists(AA) Then   '¦r¨å¤º¬dµL¸Ó±ø¥ó
      d(AA) = Application.Transpose(Application.Transpose(ar(i, 1).Resize(, 115)))
   Else
      a = Application.Transpose(Application.Transpose(d(AA)))   '±N¦r¨å¸ê®Æ¨ú¥X
      a(103) = a(103) + ar(i, 103) + 1 '²Ä¤Gµ§¥H¤W³Ó³õ³£¦h¥[1
      For Each r In Array(104, 107, 109, 115) '±N³Æµù,DC,DE,DKÄæ¦ì¸ê®Æ¦X¨Ö
         If a(r) <> "" And ar(i, r) <> "" Then '¦pªG¦r¨å»PÄæ¦ì³£¦³¸ê®Æ,¨Ï¥Î","¬Û³s
            a(r) = a(r) & "," & ar(i, r)
         ElseIf a(r) = "" And ar(i, r) <> "" Then '¦pªG¦r¨å¸ê®Æ¬°ªÅ¥Õ,Äæ¦ì¬O¦³¸ê®Æªº,¨Ï¥ÎÄæ¦ì¸ê®Æ
            a(r) = ar(i, r)
         End If
      Next
      d(AA) = a   '±N¸ê®Æ©ñ¦^¦r¨å
   End If
Next
With Sheets(2)  '¦b²Ä¤G­ÓSheet¶ñ¤J¸ê®Æ
.[a1].CurrentRegion.Clear '²M°£Sheet¸ê®Æ
.[a1].Resize(d.Count, UBound(a)) = Application.Transpose(Application.Transpose(d.items)) '±N¦r¨å¸ê®Æ¦C¥X
End With
Set d = Nothing
Application.ScreenUpdating = True
End Sub

TOP

        ÀR«ä¦Û¦b : §Ú­Ì­n°µ¦nªÀ·|ªºÀô«O¡A¤]­n°µ¦n¤º¤ßªºÀô«O¡C
ªð¦^¦Cªí ¤W¤@¥DÃD