Excel精英培训网

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

[已解决]再求另一个问题

[复制链接]
发表于 2014-2-8 13:32 | 显示全部楼层 |阅读模式
本帖最后由 GYUHJ 于 2014-2-8 14:32 编辑

BOOK1.rar (296.66 KB, 下载次数: 5)
发表于 2014-2-8 14:22 | 显示全部楼层    本楼为最佳答案   
提取的数据有重复要不去重呢?
未去重的数据,请测试:
  1. Sub test()
  2.     Dim ar, re, temp
  3.     Dim i As Integer, j As Long, Cnt As Long
  4.     ar = Sheets(1).Range("N3").CurrentRegion
  5.     ReDim re(1 To 9999, 1 To 1)
  6.     For i = 1 To UBound(ar, 2) - 3
  7.         ReDim temp(999) As Integer
  8.         For j = 1 To UBound(ar) - 3
  9.             For k = 0 To 3
  10.                 If ar(j, i + k) <> "" Then
  11.                     temp(Val(ar(j, i + k))) = temp(Val(ar(j, i + k))) + 1
  12.                 End If
  13.             Next
  14.         Next
  15.         For j = 0 To 999
  16.             If temp(j) > 20 Then
  17.                 Cnt = Cnt + 1
  18.                 re(Cnt, 1) = Format(j, "000")
  19.             End If
  20.         Next
  21.     Next
  22.     Sheets(1).[a1:a65536].ClearContents
  23.     If Cnt > 0 Then
  24.         Sheets(1).[a1].Resize(Cnt) = re
  25.     Else
  26.         MsgBox "无匹配数据"
  27.     End If
  28. End Sub
复制代码
回复

使用道具 举报

发表于 2014-2-8 14:24 | 显示全部楼层
本帖最后由 CheryBTL 于 2014-2-8 14:33 编辑

按从左到右提取并按满足条件的顺序提取的不重复数据,请测试:
Cnt这个参数及相关的赋值可以不用,删除了。
  1. Sub test()
  2.     Dim ar, re, temp, d As Object
  3.     Dim i As Integer, j As Long
  4.     Set d = CreateObject("Scripting.Dictionary")
  5.     ar = Sheets(1).Range("N3").CurrentRegion
  6.     ReDim re(1 To 9999, 1 To 1)
  7.     For i = 1 To UBound(ar, 2) - 3
  8.         ReDim temp(999) As Integer
  9.         For j = 1 To UBound(ar) - 3
  10.             For k = 0 To 3
  11.                 If ar(j, i + k) <> "" Then
  12.                     temp(Val(ar(j, i + k))) = temp(Val(ar(j, i + k))) + 1
  13.                 End If
  14.             Next
  15.         Next
  16.         For j = 0 To 999
  17.             If temp(j) > 20 Then
  18.                 d(Format(j, "000")) = ""
  19.             End If
  20.         Next
  21.     Next
  22.     Sheets(1).[a1:a65536].ClearContents
  23.     If Cnt > 0 Then
  24.         Sheets(1).[a1].Resize(d.Count) = Application.Transpose(d.keys)
  25.     Else
  26.         MsgBox "无匹配数据"
  27.     End If
  28. End Sub
复制代码
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-3 18:21 , Processed in 0.203979 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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