Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2655|回复: 1

[已解决]分别筛选出5表中数字不相同的行

[复制链接]
发表于 2014-4-30 18:19 | 显示全部楼层 |阅读模式
请修改代码
     1、 在工作表3中有15表格,每5个表相比较,删除5表中相同数字的行,把5个表中不相同数字的行筛选出来,放到工作表2对应表格里.如:工作表3中,表1、2、3、4、5五个表比较,删除五表中相同数字的行,把各表不相同数字的行筛选出来,放到工作表2对应表格里表
     2、工作表3里各表121行,工作表2内各表60行。
     3、运行到“If d(x).exists(a(i)(j)) Then”时,出现“运行时错误‘424’,要求对象”,
     谢谢!
最佳答案
2014-4-30 19:10
  1. Sub Macro1()
  2. Dim arr, d(1 To 5), a(1 To 5), y%
  3. For h = 1 To 2 '分二次循环行
  4.     s = 0
  5.     For i = 1 To 489 Step 122  '115
  6.         s = s + 1
  7.         Set d(s) = CreateObject("scripting.dictionary")
  8.         arr = Sheets("3").Cells((h - 1) * 610 + i, 1).Resize(121, 9)
  9.         For j = 1 To UBound(arr)
  10.             zf = Join(Application.Index(arr, j, 0), ",")
  11.             d(s)(zf) = ""
  12.         Next
  13.     Next
  14.     For i = 1 To 5
  15.         h2 = (h - 1) * 305 + (i - 1) * 61
  16.         a(i) = d(i).keys
  17.         s3 = 0
  18.         For j = 0 To d(i).Count - 1
  19.             s2 = 0
  20.             For k = 1 To 4
  21.                 x = (i + k - 1) Mod 5 + 1 '3
  22.                 If d(x).exists(a(i)(j)) Then s2 = s2 + 1
  23.             Next
  24.             If s2 <> 4 Then '2
  25.                 s3 = s3 + 1
  26.                 Sheets("2").Cells(h2 + s3, 1).Resize(1, 9) = Split(a(i)(j), ",")
  27.             End If
  28.         Next
  29.     Next
  30.     For i2 = 1 To 5 '3
  31.         d(i2).RemoveAll
  32.     Next
  33.     Sheets("2").Activate
  34.     [a:ac] = [a:ac].Value
  35. Next
  36. End Sub
复制代码

分别筛选出5表中数字不相同的行 .rar

49.6 KB, 下载次数: 12

发表于 2014-4-30 19:10 | 显示全部楼层    本楼为最佳答案   
  1. Sub Macro1()
  2. Dim arr, d(1 To 5), a(1 To 5), y%
  3. For h = 1 To 2 '分二次循环行
  4.     s = 0
  5.     For i = 1 To 489 Step 122  '115
  6.         s = s + 1
  7.         Set d(s) = CreateObject("scripting.dictionary")
  8.         arr = Sheets("3").Cells((h - 1) * 610 + i, 1).Resize(121, 9)
  9.         For j = 1 To UBound(arr)
  10.             zf = Join(Application.Index(arr, j, 0), ",")
  11.             d(s)(zf) = ""
  12.         Next
  13.     Next
  14.     For i = 1 To 5
  15.         h2 = (h - 1) * 305 + (i - 1) * 61
  16.         a(i) = d(i).keys
  17.         s3 = 0
  18.         For j = 0 To d(i).Count - 1
  19.             s2 = 0
  20.             For k = 1 To 4
  21.                 x = (i + k - 1) Mod 5 + 1 '3
  22.                 If d(x).exists(a(i)(j)) Then s2 = s2 + 1
  23.             Next
  24.             If s2 <> 4 Then '2
  25.                 s3 = s3 + 1
  26.                 Sheets("2").Cells(h2 + s3, 1).Resize(1, 9) = Split(a(i)(j), ",")
  27.             End If
  28.         Next
  29.     Next
  30.     For i2 = 1 To 5 '3
  31.         d(i2).RemoveAll
  32.     Next
  33.     Sheets("2").Activate
  34.     [a:ac] = [a:ac].Value
  35. Next
  36. End Sub
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-19 23:59 , Processed in 0.320638 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表