Excel精英培训网

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

[已解决]按附件要求结果

[复制链接]
发表于 2015-1-23 22:56 | 显示全部楼层 |阅读模式
本帖最后由 meet10010 于 2015-1-24 10:38 编辑

按附件要求结果
最佳答案
2015-1-24 04:20
  1. Sub Macro1()
  2. Dim arr, brr(1 To 65000, 1 To 1), w(9)
  3. Dim a%, b%, c%, d%, e%, s&, n%
  4. arr = [a22:iv23]
  5. n = 50 'UBound(arr, 2)
  6. For a = 2 To n - 5
  7.     For b = a + 1 To n - 3
  8.         For c = b + 1 To n - 2
  9.             For d = c + 1 To n - 1
  10.                 For e = d + 1 To n
  11.                     w(arr(1, a)) = arr(1, a)
  12.                     w(arr(1, b)) = arr(1, b)
  13.                     w(arr(1, c)) = arr(1, c)
  14.                     w(arr(1, d)) = arr(1, d)
  15.                     w(arr(1, e)) = arr(1, e)
  16.                     w(arr(2, a)) = arr(2, a)
  17.                     w(arr(2, b)) = arr(2, b)
  18.                     w(arr(2, c)) = arr(2, c)
  19.                     w(arr(2, d)) = arr(2, d)
  20.                     w(arr(2, e)) = arr(2, e)
  21.                     If Len(Join(w, "")) = 10 Then s = s + 1: brr(s, 1) = a & "," & b & "," & c & "," & d & "," & e
  22.                     Erase w
  23.                     If s > 60000 Then GoTo line100
  24.                 Next
  25.             Next
  26.         Next
  27.     Next
  28. Next
  29. line100:
  30. '结果代表符合数据所在的列
  31. Range("a26").Resize(s) = brr
  32. End Sub
复制代码

dsmch.rar

14.74 KB, 下载次数: 20

发表于 2015-1-23 23:02 | 显示全部楼层
回复

使用道具 举报

发表于 2015-1-24 04:20 | 显示全部楼层    本楼为最佳答案   
  1. Sub Macro1()
  2. Dim arr, brr(1 To 65000, 1 To 1), w(9)
  3. Dim a%, b%, c%, d%, e%, s&, n%
  4. arr = [a22:iv23]
  5. n = 50 'UBound(arr, 2)
  6. For a = 2 To n - 5
  7.     For b = a + 1 To n - 3
  8.         For c = b + 1 To n - 2
  9.             For d = c + 1 To n - 1
  10.                 For e = d + 1 To n
  11.                     w(arr(1, a)) = arr(1, a)
  12.                     w(arr(1, b)) = arr(1, b)
  13.                     w(arr(1, c)) = arr(1, c)
  14.                     w(arr(1, d)) = arr(1, d)
  15.                     w(arr(1, e)) = arr(1, e)
  16.                     w(arr(2, a)) = arr(2, a)
  17.                     w(arr(2, b)) = arr(2, b)
  18.                     w(arr(2, c)) = arr(2, c)
  19.                     w(arr(2, d)) = arr(2, d)
  20.                     w(arr(2, e)) = arr(2, e)
  21.                     If Len(Join(w, "")) = 10 Then s = s + 1: brr(s, 1) = a & "," & b & "," & c & "," & d & "," & e
  22.                     Erase w
  23.                     If s > 60000 Then GoTo line100
  24.                 Next
  25.             Next
  26.         Next
  27.     Next
  28. Next
  29. line100:
  30. '结果代表符合数据所在的列
  31. Range("a26").Resize(s) = brr
  32. End Sub
复制代码
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 11:56 , Processed in 0.300246 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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