2016-08-21 52 views
0

我正在嘗試在VBA中編寫一些SQL代碼,以在相對較大的Excel文件(500,000行)上執行查詢,我希望找到這些給定子類別的總銷售額:使用VBA/SQL查詢大型Excel文件

我的數據是這樣的:

Order ID|Sales|ProductSubCategory|Region 
234324 3400 BookCases   South 
234345 2700 Tables    North 

這是SQL查詢的主要標準:

  • 書櫃椅子
  • 個Chairmats
  • 辦公室傢俱

我是比較新的使用VBA,並在VBA尤其是SQL,所以任何幫助將不勝感激。謝謝你的時間。

+2

有很多的職位在這裏使用SQL查詢的Excel數據,以便覆蓋。看看這些代碼,嘗試一些代碼,然後發佈具體的問題。例如。 http://stackoverflow.com/questions/19755396/performing-sql-queries-on-an-excel-table-within-a-workbook-with-vba-macro –

+0

好奇,你爲什麼要在Excel中存儲這樣的數據量而不是使用實際的數據庫?如果使用Windows,則Jet/ACE SQL引擎(MS Access的默認數據庫)已經安裝並可供使用。 – Parfait

+0

我沒有訪問數據庫的權限,只是一個包含數據庫數據的文件。想想這樣的事情是我需要的:https://www.youtube.com/watch?v = 1xIZUZaJB8s – petergensler

回答

0

您可以使用電源查詢從Excel文件/ SQL數據庫只(使用過濾條件)的相關數據導入到數據模型在新的Excel文件,然後你可以很容易地執行對數據模型分析。

0
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文件像你這樣的數據來源將訪問文件,查詢它的方式:)

+0

謝謝!我之前正在查看視頻,並且我被告知該查詢返回記錄集或查詢結果。我將如何將它存儲在新表中? – petergensler

+0

以及它取決於你如何調用記錄集。但通常你可以使用類似ThisWorkbook.Sheets(「SheetXYZ」)。Range(「a1」)。CopyFromRecordSet –

+0

@petergensler在這裏查看更多信息http://www.functionx.com/vbaccess/Lesson22.htm –