Excel精英培训网

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

[已解决]求助代码解决

[复制链接]
发表于 2013-5-26 19:15 | 显示全部楼层 |阅读模式
Book1.rar (5.81 KB, 下载次数: 15)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-5-26 20:54 | 显示全部楼层
回复

使用道具 举报

发表于 2013-5-26 20:57 | 显示全部楼层
     如果某数在连续六列里个数的个数只有两个(例i到n列"111"有1个和3个两个),就把它放在a列  这句话啥意思?
回复

使用道具 举报

发表于 2013-5-26 21:32 | 显示全部楼层    本楼为最佳答案   
301640-VBA-字典-条件计数并提取.rar (12.34 KB, 下载次数: 4)
回复

使用道具 举报

 楼主| 发表于 2013-5-26 22:08 | 显示全部楼层
那么的帅 发表于 2013-5-26 21:32

有点小问题 301640-VBA-字典-条件计数并提取.rar (12.34 KB, 下载次数: 4)
回复

使用道具 举报

发表于 2013-5-26 22:35 | 显示全部楼层
bhurdx 发表于 2013-5-26 22:08
有点小问题

按照你说的,A列的000 也应该属于

请明确
回复

使用道具 举报

 楼主| 发表于 2013-5-26 23:00 | 显示全部楼层
那么的帅 发表于 2013-5-26 22:35
按照你说的,A列的000 也应该属于

请明确

我的意思是假设有二组数合条件,结果它只会显示一组数,例附件结果是111,505,但它显示两个111
回复

使用道具 举报

发表于 2013-5-26 23:04 | 显示全部楼层
bhurdx 发表于 2013-5-26 23:00
我的意思是假设有二组数合条件,结果它只会显示一组数,例附件结果是111,505,但它显示两个111

1 解释 为什么505 符合?
2 如果505 符合,为什么 I列 的 000 不符合?
回复

使用道具 举报

发表于 2013-5-26 23:07 | 显示全部楼层
bhurdx 发表于 2013-5-26 23:00
我的意思是假设有二组数合条件,结果它只会显示一组数,例附件结果是111,505,但它显示两个111

我知道了
  1. Sub TIQU()
  2.     On Error Resume Next
  3.     Dim Arr1
  4.     Dim Row1, D1, I1, J1, Arr11(), Arr12(), Arr13()
  5.     Set D1 = CreateObject("scripting.dictionary")
  6.     Set d2 = CreateObject("scripting.dictionary")
  7.     Row1 = Range("I" & Rows.Count).End(xlUp).Row
  8.     Arr1 = Range("I4:S" & Row1)
  9.     For j = 1 To UBound(Arr1, 2) - 5
  10.         For p = 1 To 6
  11.             For i = 1 To UBound(Arr1)
  12.                 If p = 1 Then
  13.                     If Not D1.exists(Arr1(i, j)) Then
  14.                         m = m + 1
  15.                         ReDim Preserve Arr11(1 To 7, 1 To m)
  16.                         D1(Arr1(i, j)) = m
  17.                         Arr11(1, m) = Arr1(i, j)
  18.                     End If
  19.                 End If
  20.                 Arr11(p + 1, D1(Arr1(i, j + p - 1))) = Arr11(p + 1, D1(Arr1(i, j + p - 1))) + 1
  21.             Next i
  22.         Next p
  23.         For i = 1 To m
  24.             y = False
  25.             For j2 = 2 To 7
  26.                 If Arr11(j2, i) >= 1 Then
  27.                     If Not d2.exists(Arr11(j2, i)) Then
  28.                         m2 = m2 + 1
  29.                         d2(Arr11(j2, i)) = m2
  30.                         ReDim Preserve Arr12(1 To 2, 1 To m2)
  31.                         Arr12(1, m2) = Arr11(1, i)
  32.                     End If
  33.                     Arr12(2, d2(Arr11(j2, i))) = Arr12(2, d2(Arr11(j2, i))) + 1
  34.                 Else
  35.                     y = True
  36.                 End If
  37.             Next j2
  38.             If m2 = 2 And y = False Then
  39.                 M3 = M3 + 1
  40.                 ReDim Preserve Arr13(1 To 1, 1 To M3)
  41.                 Arr13(1, M3) = Arr11(1, i)
  42.                 End If
  43.             Erase Arr12
  44.             m2 = 0
  45.             d2.RemoveAll
  46.         Next i
  47.         m = 0
  48.         Erase Arr11
  49.         D1.RemoveAll
  50.     Next j
  51.     With Sheets(2).Range("A2").Resize(M3, 1)
  52.         .Value = Application.Transpose(Arr13)
  53.         End With
  54. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2013-5-26 23:30 | 显示全部楼层
那么的帅 发表于 2013-5-26 23:04
1 解释 为什么505 符合?
2 如果505 符合,为什么 I列 的 000 不符合?

我先说I列的"000",条件1是连续六列每列都要有"000",这个就不合条件,  
                            条件2是个数数只是两个结果(相同的算一个),例"111"是
                                          两个相同的三列,"505"是一个两列相同,另一个四列相同,
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-1 21:53 , Processed in 0.523904 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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