[英]Query Large Excel File using VBA/SQL
我正在嘗試在VBA中編寫一些SQL代碼以在相對較大的excel文件(500,000行)上執行查詢,在這里我想找到這些給定子類別的總銷售額:
我的數據如下所示:
Order ID|Sales|ProductSubCategory|Region
234324 3400 BookCases South
234345 2700 Tables North
這是SQL查詢的主要標准:
對於使用VBA(尤其是VBA中的SQL),我是一個相對較新的人,因此對您的幫助將不勝感激。 謝謝你的時間。
您可以使用Power查詢僅將相關數據(使用過濾條件)從excel文件/ Sql數據庫導入到新excel文件中的數據模型中,然后可以輕松地對該數據模型進行分析。
strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" _
& "Data Source='C:\Path\To\Workbook.xlsm';" _
& "Extended Properties=""Excel 8.0;HDR=YES;"";"
strSQL = "SELECT * FROM [Sheet1$]"
您可以像對待訪問文件一樣將excel文件視為數據源,然后以這種方式查詢它:)
RunQuery(SourceFile作為字符串,Targetrange作為范圍,strsql作為字符串,ColName作為布爾值)
Dim dbConnection As ADODB.Connection, rs As ADODB.Recordset
Dim dbConnectionString As String
Dim TargetCell As Range, i As Integer
dbConnectionString = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}; DBQ=" & SourceFile & ";"
Set dbConnection = New ADODB.Connection
'On Error GoTo InvalidInput
dbConnection.Open dbConnectionString
Set rs = dbConnection.Execute(strsql)
If ColName Then
Set TargetCell = Targetrange.Cells(1, 1)
For i = 0 To rs.Fields.count - 1
TargetCell.Offset(0, i).Formula = rs.Fields(i).Name
Debug.Print rs.Fields(i).Name
Next i
Set TargetCell = Targetrange.Offset(1, 0)
Else
Set TargetCell = Targetrange.Offset(0, 0)
End If
TargetCell.CopyFromRecordset rs
rs.Close
dbConnection.Close
Set TargetCell = Nothing
Set rs = Nothing
Set dbConnection = Nothing
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.