设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
楼主: pureshadow
打印 上一主题 下一主题

关于剔除重复

[复制链接]

点击这里给我发消息

31#
 楼主| 发表于 2008-11-12 21:57:50 | 只看该作者
原帖由 Jonathan.K 于 2008-3-27 10:03 发表
Sub test()
    Dim rngData As Variant
    Dim i As Long
    Dim oDic As Object
   
    Application.ScreenUpdating = False
    Set oDic = CreateObject("Scripting.Dictionary")
    With Sheet1
  ...

现在才看明白里面的意思
这恐怕是运行速度最快的一种了[:31]
32#
发表于 2008-11-14 19:52:32 | 只看该作者
呵呵,妖都才明白,我更看不懂了[:33]
33#
发表于 2009-3-4 01:57:50 | 只看该作者
数据量大的话用sql吧
Sub cx()
    Dim cnn As New ADODB.Connection
    Dim rds As New ADODB.Recordset
    Dim i As Integer
    Dim sql As String, sfilename As String, cnnstr As String
    sfilename = ThisWorkbook.FullName
    cnnstr = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" & sfilename
    sql = "select distinct * from [sheet1$]  ;"
    cnn.Open cnnstr
    rds.Open sql, cnn, adOpenKeyset, adLockOptimistic
    Sheets("sheet1").Range("b2").CopyFromRecordset rds
    rds.Close: cnn.Close
    Set rds = Nothing: Set cnn = Nothing
End Sub

点击这里给我发消息

34#
 楼主| 发表于 2009-3-4 09:12:28 | 只看该作者
SQ的速度也比不上字典,字典是VBA里比数组更快上十倍的
35#
发表于 2009-3-5 02:23:28 | 只看该作者
学习了
找时间测试下

点击这里给我发消息

36#
 楼主| 发表于 2009-6-1 13:35:23 | 只看该作者
函数是有无数种解决方法的,先来一种较易理解的:

例如原数据在A2:A11,要剔除重复。

核心在于把不重复的按序排好,重复的T到一边去:
SMALL(IF(MATCH($A$2: $A$11,$A$2: $A$11,)=ROW($A$1: $A$10),ROW($A$1 ...
pureshadow 发表于 2008-3-26 16:17

回头看看以前自己写的函数,真不是一般的烂
简化一下中间部分:
small(if(match($a$2: $a$11,$a$2: $a$11,)=row($1: $10),row($1: $10),11),row(a1))
37#
发表于 2009-6-9 15:36:05 | 只看该作者
还是数据透视最快了
38#
发表于 2009-6-30 13:04:04 | 只看该作者
老黄历~~~
39#
发表于 2009-7-18 16:09:45 | 只看该作者
支持,用数据透视表操作快捷
40#
发表于 2009-8-8 21:42:54 | 只看该作者
SEE
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-4-26 14:56 , Processed in 0.102286 second(s), 32 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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