如何在Excel中高效处理时间和日期数据?-实用技巧与方法解析
126
2023-10-19
【摘要】 本书摘自《Excel财务日常数据与实例讲解》一书中第1章,第4节,作者是韩小良、贾春雷。
1.4 利用VBA 获取满足条件的工作表数据
很多情况下,需要更加快速地从其他工作表获取数据,例如,建立一个动态的明细表制作模板,可以快速地筛选任意指定客户的出库单;从明细表中批量制作各个客户的应收账款对账单。此时,使用 VBA 建立一个自动化模型就是一个比较好的选择。
1.4. 1从总表中自动制作指定项目的明细表
从总表制作指定项目明细表的方法很多,如筛选复制法(最笨的方法)、数据透视表法、 VBA 循环法、 VBA+ADO+SQL 法,其中VBA+ADO+SQL 法最简单也最高效。
案例1-21
图1-160所示是一个发票信息表。现在要求制作指定供货商在指定时间段内的发票明细, 查询表结构如图1-161所示。
在单元格B1 指定供货商,单元格B2 和 B3 分别指定要查询的开始日期和截止日期,单 击“查询”按钮,就得到满足条件的发票明细。
下面是具体的程序代码,这里使用VBA+ADO+SQL 法。
Sub 查询()
Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim SQL As String
Dim ws As Worksheet
Dim Sup As String, datel As Date, date2 As Date
Set ws=ThisWorkbook.Worksheets("查询表")
'指定查询条件
Sup =ws.Range("B1")
datel = ws.Range("B2")
date2 =ws.Range("B3")
'清除上一次查询的结果
ws.Range("A6:D1000").ClearContents
建立与工作簿的连接
With cnn
.Provider="microsoft.ace.oledb.12.0"
.ConnectionString ="Extended Properties=Excel 12.0;"
&"Data Source="& ThisWorkbook.FullName
.Open
End With
'设置查询语句
SQL="select* from[发票信息表$]"
&"where供应商名称="&Sup&""
&"and日期>=#"&datel&"#"
&"and日期<=#"& date2&"#"
'开始查询
rs.Open SQL,cnn,adOpenKeyset, adLockOptimistic
复制查询结果
If rs.RecordCount>0 Then
ws.Range("A6").CopyFromRecordset rs
Else
MsgBox" 没有查询到满足条件的结果!请重新设置条件。",vbInformation
End If
End Sub
设置条件,单击“查询”按钮就得到查询结果。图1-162就是一个示例。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~