Excel实例下载
  VBA  应用教程
    数据库SQL知识
设为首页
Distinct - 筛选出不重复的数据
作者:bengdeng | 来源:Excel吧 | 时间:2008-11-11 | 阅读权限:游客 | 会员币:0 | 【

在前一篇 SQL语言教程 中,我们介绍了用Top来限制结果的数量,而这一篇要介绍的Distinct,其功能是用来使结果是不重复的数据。

在Excel中我们可以利用高级筛选来筛选出不重复的值,在最新版的Excel2007中,还新增了删除重复项的功能,这些都类似于Distinct的作用,其语法是:

Select Distinct 列名 From 表格名

一般来说,因为Distinct 会按列名对整个数据表进行额外的排序,如果此列不是索引列的话,在大量数据时运行的效率不是很好,因此除非万不得与,一般都不用Distinct 而用以后在介绍的Exists来代替Distinct 的一些用法,不过对于数据量较小时,运算的速度还是可以接受的。

下面这个例子,是列出单条记录中,有出仓数量大于8的物品名称清单。

Sub 进销存表数据库中出仓表指定条件的清单()
'*******************************************
'时间:2008-11-11
'作者:bengdeng
'功能:在程序文件同一目录下进销存表数据库中出仓表指定条件的清单
'注意:要在工具/引用中引用microsoft activex date objects x.x
'      其中x.x为版本号,可能会因为你安装的office的版本不同而不同,本例引用了2.5版
'发布:http://www.excelba.com
'*******************************************
Dim conn As ADODB.Connection
Dim WN As String
Dim TableName As String
Dim sSql As String
Dim xSh As Worksheet
Dim sRan As Range
Dim tNum As Integer

WN = "进销存表.mdb"
TableName = "出仓表"
Set xSh = ThisWorkbook.Worksheets.Add
Set sRan = xSh.Range("A1")
tNum = 8

Set conn = New ADODB.Connection
conn.ConnectionString = "Provider=Microsoft.Jet.Oledb.4.0;" & _
                        "Data Source=" & ThisWorkbook.Path & "\" & WN
conn.Open
If conn.State = adStateOpen Then
    sSql = "Select Distinct 物品名称 From " & TableName & " Where 出仓数量 > " & tNum
    sRan.Value = "下面为“" & TableName & "”中出仓数量大于" & tNum & "的物品清单!"
    sRan.Offset(1, 0).CopyFromRecordset conn.Execute(sSql)
    MsgBox "成功导入“" & TableName & "”中出仓数量大于" & tNum & "的物品清单!", , "http://excelba.com"
    conn.Close
End If
Set conn = Nothing
End Sub

照例,我们也给出一段相同功能的操作Excel文件的程序:

Sub 进销存表文件中出仓表指定条件的清单()
'*******************************************
'时间:2008-11-11
'作者:bengdeng
'功能:在程序文件同一目录下进销存表文件中出仓表指定条件的清单
'注意:要在工具/引用中引用microsoft activex date objects x.x
'      其中x.x为版本号,可能会因为你安装的office的版本不同而不同,本例引用了2.5版
'发布:http://www.excelba.com
'*******************************************
Dim conn As ADODB.Connection
Dim WN As String
Dim TableName As String
Dim sSql As String
Dim xSh As Worksheet
Dim sRan As Range
Dim tNum As Integer

WN = "进销存表.xls"
TableName = "出仓表"
Set xSh = ThisWorkbook.Worksheets.Add
Set sRan = xSh.Range("A1")
tNum = 8

Set conn = New ADODB.Connection
conn.ConnectionString = "Provider=Microsoft.Jet.Oledb.4.0;" & _
                        "Extended Properties=Excel 8.0;" & _
                        "Data Source=" & ThisWorkbook.Path & "\" & WN
conn.Open
If conn.State = adStateOpen Then
    sSql = "Select Distinct 物品名称 From [" & TableName & "$] Where 出仓数量 > " & tNum
    sRan.Value = "下面为“" & TableName & "”中出仓数量大于" & tNum & "的物品清单!"
    sRan.Offset(1, 0).CopyFromRecordset conn.Execute(sSql)
    MsgBox "成功导入“" & TableName & "”中出仓数量大于" & tNum & "的物品清单!", , "http://excelba.com"
    conn.Close
End If
Set conn = Nothing
End Sub

为了更好的理解上面的文字,你可以动手复制上面的代码,运行一下看一下效果吧*^_^*。

如果你不是从第一篇 SQL语言教程 看起,你需要到http://www.excelba.com/Soft/Html/119.html 下载文件,压缩文件包含三个文件,数据库文件——进销存表.mdb与Excel文件——进销存表.xls就是保 存数据的文件,而主文件.xls就是主程序文件,以后大家的代码可以添加在这个文件的新模块里,然后再 运行程序代码。

文章录入:admin | 浏览次数:
相关评论(以下网友评论只代表其个人观点,不代表Excel吧的观点或立场)
相关信息

关于本站 | 留言本站 | 友情连接 | 后台管理
Copyright © 2005 - 2008 Excel吧 Inc. All Rights Reserved.
HxCms Ver9.0  闽ICP备06001689号
关闭此窗口