九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
使用ADO篩選Excel工作簿中的數(shù)據(jù)
 
    有許多種方法篩選Excel中的數(shù)據(jù),最常用的方法是使用內(nèi)置的自動(dòng)篩選或高級(jí)篩選功能。雖然這兩種內(nèi)置功能非常強(qiáng)大,但其局限是需要將篩選的結(jié)果放置在與原數(shù)據(jù)相同的工作表內(nèi)。如果需要將數(shù)據(jù)提取到不同的工作表,則需要不同的方式。
    使用ADO,您可以創(chuàng)建查詢,從而將篩選的數(shù)據(jù)放置到您想放置的位置。
    假如工作簿中有兩個(gè)工作表:DB_DataData2。其中,DB_Data里為包含約160個(gè)姓名的列表,Data2中有一個(gè)數(shù)據(jù)有效性下拉列表(即黃色底紋的單元格),可從中選擇一個(gè)字母。一旦從中選擇一個(gè)字母,以此字母為開(kāi)頭的姓就會(huì)復(fù)制到工作表Data2中。

        DB_Data表:

 

        Data2表:

 

    主要的代碼清單如下:
    (以下代碼復(fù)制到模塊或Data2中)
 
Option Explicit
Sub
ADO_Self_Excel()
  Dim cnn As ADODB.Connection
  Dim rst As ADODB.Recordset
  Dim sSQL As String
  Dim sPath As String
  Dim MyConn
  Dim sFilter As String
 
  sPath = ActiveWorkbook.FullName
 
  '
定義篩選和提取姓名的SQL語(yǔ)句.
  'ADO中使用%作為通配符而不是*

  sFilter = UCase(Sheets("Data2").Range("H1").Value) & "%"
 
  '
SQL中可以像表一樣看待工作表名稱
  '為此,將后綴$放置在名稱的末尾并加上方括號(hào)
 
  sSQL = "SELECT * FROM [DB_Data$]" 'DB_Data
是源工作表
  sSQL = sSQL & " WHERE LastName Like '" & sFilter & "'"
 
  '
建立對(duì)相同文件的連接
  '當(dāng)連接到Excel而不是數(shù)據(jù)庫(kù)時(shí),需要定義擴(kuò)展的屬性為Excel 8.0 (1個(gè)使用ADOExcel版本)
 
  MyConn = sPath
 
  Set cnn = New ADODB.Connection
  With cnn
    .Provider = "Microsoft.Jet.OLEDB.4.0"
    .Properties("Extended Properties").Value = "Excel 8.0"
    .Open MyConn
  End With
 
  '
定義基于SQL語(yǔ)句的記錄集

  Set rst = New ADODB.Recordset
  rst.CursorLocation = adUseServer
  rst.Open Source:=sSQL, _
    ActiveConnection:=cnn, _
    CursorType:=adOpenForwardOnly, _
    LockType:=adLockOptimistic, _
    Options:=adCmdText
 
  Application.ScreenUpdating = False
 
  '
刪除目標(biāo)工作表中已存在的數(shù)據(jù)
  '然后以單元格A2開(kāi)始填充最新篩選的結(jié)果
  '完成后,清除引用以避免內(nèi)存泄漏

  With Sheets("Data2") 'Data2是目標(biāo)工作表
    .Range("A1").CurrentRegion.Offset(1, 0).Clear
    .Range("A2").CopyFromRecordset rst
  End With
  rst.Close
  cnn.Close
 
  Application.ScreenUpdating = True
 
End Sub

下面的代碼使用相應(yīng)工作表Data2中的Worksheet_Change事件。這樣,當(dāng)單元格H1發(fā)生變化時(shí),ADO_Self_Excel將使用H1中的內(nèi)容創(chuàng)建篩選。如果H1為空,那么返回所有的記錄。

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If Intersect(Range("H1"), Target) Is Nothing Then Exit Sub
    Call ADO_Self_Excel
End Sub

 

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Excel VBA ADO SQL入門(mén)教程002:簡(jiǎn)單認(rèn)識(shí)ADO
他山之石——VBA數(shù)據(jù)庫(kù)操作
《神奇的VBA》編程:查詢Access數(shù)據(jù)庫(kù)
Excel VBA編程的常用代碼
Excel | 如何運(yùn)用VBA+ADO使EXCEL和ACCESS進(jìn)行數(shù)據(jù)交互 | ADO,ACCESS,數(shù)據(jù)交互,EXCEL,VBA
VB通過(guò)ADO快速讀取EXCEL與TXT文件
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服