EXCEL VBA ³£¼û×ÖµäÓ÷¨¼¯½õ¼°´úÂëÏê½â£¨È«£©

ͼʵÀý3-1 ʾÀý

´úÂëÈ«²¿Ö´ÐкóÈçͼʵÀý3-2Ëùʾ¡£

ͼʵÀý3-2 ʾÀý

16

ʵÀý4 ²ð·ÖÊý¾Ý²»Öظ´

Ò»¡¢ÎÊÌâµÄÌá³ö£º

ÓÐÒ»Áи÷ÖÖÊÖ»úÆ·ÅÆÐͺŵÄÊý¾Ý£¬ÒªÇó±àдһ¶Î´úÂ룬°´ÕÕÆ·ÅÆ»®·Ö³ÉûÓÐÖØ¸´Êý¾ÝµÄÈý´óÀà¡£ ¶þ¡¢´úÂ룺 Sub caifen() Dim Myr&, Arr, x& Dim d, d1, d2, i&, j&

Set d = CreateObject(\Set d1 = CreateObject(\Set d2 = CreateObject(\Myr = [a65536].End(xlUp).Row Arr = Range(\& Myr) Range(\& Myr).ClearContents

my = Array(\\ŵ»ùÑÇ\\ÈýÐÇ\\Ë÷°®\

gc = Array(\\ÁªÏë\\ÌìÓï\\½ðÁ¢\\²½²½¸ß\\²¨µ¼\\\¿áÅÉ\For x = 1 To UBound(Arr) For i = 0 To UBound(my)

If InStr(Arr(x, 1), my(i)) > 0 Then d(Arr(x, 1)) = \ GoTo 100 End If Next i

For j = 0 To UBound(gc)

If InStr(Arr(x, 1), gc(j)) > 0 Then d1(Arr(x, 1)) = \ GoTo 100 End If Next j

d2(Arr(x, 1)) = \100: Next x

17

Range(\+ 1, 1) = Application.Transpose(d.keys) Range(\+ 1, 1) = Application.Transpose(d1.keys) Range(\+ 1, 1) = Application.Transpose(d2.keys) End Sub

Èý¡¢´úÂëÏê½â

1¡¢Set d2 = CreateObject(\ £ºÕë¶ÔÈý¸ö²»Í¬µÄÖÖÀ࣬´´½¨d¡¢d1¡¢d2Èý¸ö×Öµä¶ÔÏó¡£

2¡¢Myr = [a65536].End(xlUp).Row £º°ÑAÁÐ×îºóÒ»Ðв»Îª¿Õ°×µÄÐÐÊý¸³¸ø±äÁ¿Myr¡£

3¡¢Arr = Range(\ £º°ÑA2¿ªÊ¼µÄÓÐÊý¾ÝµÄµ¥Ôª¸ñÇøÓò¸³¸ø±äÁ¿Arr¡£ 4¡¢Range(\£º°ÑC2µ½EÁе¥Ôª¸ñÇøÓòÇå¿Õ¡£

5¡¢my = Array(\\ŵ»ùÑÇ\\ÈýÐÇ\\Ë÷°®\ £ºVBAº¯ÊýArray·µ»ØÒ»¸öһάÊý×飬ĬÈÏϽçΪ0¡£°ÑArrayº¯Êý·µ»ØµÄÊý×鸳¸ø±äÁ¿my(óÒ×Á½ºº×ÖµÄÊ××Öĸ)¡£ 6¡¢gc = Array(\ÁªÏë\ÌìÓï\½ðÁ¢\²½²½¸ß\²¨µ¼\¿áÅÉ\ £º°ÑArrayº¯Êý·µ»ØµÄÊý×鸳¸ø±äÁ¿gc(¹ú²úÁ½ºº×ÖµÄÊ××Öĸ)¡£

7¡¢For x = 1 To UBound(Arr) £ºÔÚAÁÐԭʼÊý¾ÝµÄÊý×éÖÐÖðһѭ»·¡£

8¡¢For i = 0 To UBound(my) £ºÔÚmyÊý×éÖÐÖðһѭ»·¡£ÒòΪÓÐ4¸öóÒ×»úÆ·ÅÆ£¬ËùÒÔÓÃÑ­»·Ã¿Ò»¸öÓëԭʼÊý¾Ý±È½Ï¡£

9¡¢If InStr(Arr(x, 1), my(i)) > 0 Then £ºVBAº¯ÊýInstr·µ»ØÔÚµÚ1¸ö²ÎÊýÖвéÕÒµÄλÖã¬Èç¹û·µ»Ø½á¹û£½0£¬±íʾÔÚµÚ1¸ö²ÎÊýÖÐûÓеÚ2¸ö²ÎÊý´æÔÚ¡£±¾¾äµÄÒâ˼ÊÇÈç¹ûÕÒµ½Ã³Ò×»úÆ·ÅÆµÄ»°£¬Ö´ÐÐÏÂÃæµÄ´úÂë¡£

10¡¢d1(Arr(x, 1)) = \ £º½ÓÉϾ䣬Èç¹ûÉÏÃæÅжϳÉÁ¢£¬¾Í°ÑArr(x, 1)¼ÓÈë×Öµäd¡£ 11¡¢GoTo 100 £ºGotoÓï¾äÓÃÓÚÎÞÌõ¼þµØ×ªÒƵ½¹ý³ÌÖÐÖ¸¶¨µÄÐС£ÕâÀï²ÉÓÃÌø³ö

For iÑ­»·£¬Ò»ÊÇΪÁ˼õÉÙÑ­»·µÄ´ÎÊý£¬±ÈÈç\ÕÒµ½µÄ»°£¬ºóÃæ3¸ö¾Í²»ÐèÒªÕÒÁË£»¶þÊÇΪÁËÌø¹ýÁ½¸öСѭ»·Ö®ºóµÄÆäËüÆ·ÅÆ¼ÓÈëµÚ3¸ö×ÖµäµÄd2(Arr(x, 1)) = \Óï¾ä¡£

12¡¢For jÑ­»·ÓëÉÏÃæÏàͬ£¬ÎªÁËÅжϵõ½¹ú²ú»úÀàµÄ×Öµäd1¡£

13¡¢d2(Arr(x, 1)) = \ £ºÈç¹ûÉÏÊöÁ½¸öСѭ»·¶¼²»Âú×㣬ÄÇô¾Í¼ÓÈëÆäËüÆ·ÅÆÀà×ÖµäÀï¡£

14¡¢Range(\+ 1, 1) = Application.Transpose(d.keys) £º×îºóµÄ3¾ä·Ö±ð°Ñ×ÖµäµÄ¹Ø¼ü×ÖÊý×éתÖú󸳸øÏàÓ¦µÄµ¥Ôª¸ñÇøÓò¡£

´úÂëÖ´ÐкóÈçͼʵÀý4-1Ëùʾ¡£

18

ͼ ʵÀý4-1 ʾÀý

ɽ¾Õ»¨°æÖ÷ÓÃÁËÒ»¸ö×Öµä¶ÔÏó¾Í½â¾öÁËÉÏÊöÎÊÌâ¡£ÈÃÎÒÃÇÀ´Ñ§Ï°Ò»Ï¡£

ËÄ¡¢É½¾Õ»¨°æÖ÷µÄ´úÂ룺 Sub ²ð·Ö()

Dim pp1$, pp2$, nRow%, ds, Brr(), s(1 To 3) As Integer Set ds = CreateObject(\

pp1 = Join(WorksheetFunction.Transpose(Range(Range(\Range(\wn))), \

pp2 = Join(WorksheetFunction.Transpose(Range(Range(\Range(\wn))), \

nRow = Range(\ Arr = Range(\& nRow) ReDim Brr(1 To nRow, 1 To 3) For i = 2 To nRow

If Not ds.Exists(Arr(i, 1)) Then ds(Arr(i, 1)) = \

If pp1 Like \& Left(Arr(i, 1), 2) & \Then s(1) = s(1) + 1

19

Brr(s(1), 1) = Arr(i, 1)

ElseIf pp2 Like \& Left(Arr(i, 1), 2) & \Then s(2) = s(2) + 1 Brr(s(2), 2) = Arr(i, 1) Else

s(3) = s(3) + 1 Brr(s(3), 3) = Arr(i, 1) End If End If Next

Range(\& nRow) = Brr End Sub

Îå¡¢´úÂëÏê½â

1¡¢pp1 = Join(WorksheetFunction.Transpose(Range(Range(\ Range(\ £º

Õâ¾ä´úÂëÓÃÁËÁ½¸öVBAº¯ÊýJoin ºÍTranspose £¬Range(\´ÓG1µ¥Ôª¸ñÍùÏÂÖ±µ½×îÏÂÃæµÄµ¥Ôª¸ñ£¬Óöµ½¿Õ°×¸ñ¾ÍÍ£Ö¹¡£ÒòΪ±¾ÀýµÄG14¡¢G15µ¥Ôª¸ñÓÐ ÁíÍâµÄÊý¾Ý´æÔÚ£¬Èç¹û»¹ÊÇÓÃRange(\£¬ÄÇô¾Í»á°Ñ²»ÐèÒªµÄÊý¾Ý´ø½øÈ¥£¬Ôì³É½á¹û³ö´í¡£Transpose תÖú¯Êý£¬Ç°ÃæÒѾ­½éÉܹýÁË¡£Joinº¯ÊýÊÇͨ¹ýÁ¬½Óij¸öÊý×éÖеĶà¸ö×Ó×Ö·û´®¶ø´´½¨µÄÒ»¸ö×Ö·û´®£¬±¾¾ä´úÂëÖ´ÐкóµÃµ½pp1=\ŵ»ùÑÇ, ÈýÐÇ, Ë÷°®\¡£

pp2Ò»¾äͬÉϾäÒ»Ñù£¬µÃµ½ÁíÒ»¸ö×Ö·û´®¡£

2¡¢nRow = Range(\ £º°ÑAÁÐ×îºóÒ»Ðв»Îª¿Õ°×µÄÐÐÊý¸³¸øÕûÐͱäÁ¿nRow¡£

3¡¢Arr = Range(\& nRow) £º°ÑAÁÐA1¿ªÊ¼µÄÓÐÊý¾ÝµÄµ¥Ôª¸ñÇøÓò¸³¸ø±äÁ¿

Arr¡£

4¡¢ReDim Brr(1 To nRow, 1 To 3) £ºÓÃÓÚΪ¶¯Ì¬Êý×é±äÁ¿BrrÖØÐ·ÖÅä´æ´¢¿Õ¼ä¡£µÚһάµÄϽç´Ó1µ½ÉϽçnRow£¬µÚ¶þά´Ó1µ½3¡£ 5¡¢For i = 2 To nRow £º´Ó2µ½ nRowÖðһѭ»·¡£

6¡¢If Not ds.Exists(Arr(i, 1)) Then £ºÈç¹û×ÖµädsÖв»´æÔڹؼü×ÖArr(i, 1) 7¡¢ds(Arr(i, 1)) = \£º°ÑArr(i, 1)×÷Ϊ¹Ø¼ü×Ö¼ÓÈë×Öµäds¡£

8¡¢If pp1 Like \ £ºÕâÀïɽ°æÖ÷ÓÃÁ˱ȽÏÔËËã·ûLikeÀ´±È½Ïpp1ºÍÈ¡×ÔArr(i, 1)×ó±ßÁ½¸ö×Ö·û£¬ÔÙÔÚǰºó¼ÓÈÎÒâ×Ö·û×é³ÉµÄ×Ö·û´®£¬Èç¹ûÂú×ãÌõ¼þÎªÕæ£¬ÄÇôִÐÐÏÂÃæµÄÓï¾ä¡£

9¡¢s(1) = s(1) + 1 £ºÊý×ésµÄµÚÒ»¸öÔªËØ+1ÒԺ󸳸øÊý×ésµÄµÚÒ»¸öÔªËØ¡£

10¡¢Brr(s(1), 1) = Arr(i, 1) £º°ÑÕâ¸ö¹Ø¼ü×Ö¸³¸øµÚ2άΪ1µÄÁíÒ»¸öÊý×éBrr£¬Ò²¾Í

20

ÁªÏµ¿Í·þ£º779662525#qq.com(#Ìæ»»Îª@) ËÕICP±¸20003344ºÅ-4