Я знаю, что SQL достаточно хорошо выполняет основные запросы и управляет данными, разделенными на несколько таблиц в базе данных. Я знаю Excel 2007 немного лучше и использую его часто для управления моими проектами машиностроения.
Иногда в Excel я хочу управлять данными из нескольких электронных таблиц и объединения в одну таблицу - задача, подходящая для SQL-запроса. Обычно, когда я встречаюсь с проблемами как это, моя немедленная реакция состоит в том, чтобы начать создавать запрос в моей голове. К сожалению, много SQL-запросов времен легко не переводит в функции Excel, и это останавливает меня в моих дорожках.
Действительно ли возможно использовать SQL для этих функций в Excel?
Можно использовать ADO с Excel VBA. Например:
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
''This is just a convenient name to test, it would probably be
''better to use the full file name eg C:\Docs\XL.xls
strFile = Workbooks(1).FullName
''For ACE see: http://www.connectionstrings.com/excel-2007
strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFile _
& ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";"
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
cn.Open strCon
''Pick one:
strSQL = "SELECT * FROM DataTable" ''Named range
strSQL = "SELECT * FROM [Sheet1$A1:E346]" ''Range
strSQL = "SELECT * FROM [Sheet1$]" ''All the data in a sheet
strSQL = "SELECT * FROM [Excel 8.0;HDR=YES;IMEX=1;" _
& "database=C:\Docs\LTD.xls].[Sheet1$]" ''Refer to second workbook
rs.Open strSQL, cn
''Write a recordset to a sheet
Worksheets("Sheet3").Cells(2, 1).CopyFromRecordset rs
Запрос может использовать что-либо приемлемое в Струе SQL:
Fundamental Microsoft Jet SQL for Access 2000
Intermediate Microsoft Jet SQL for Access 2000
Advanced Microsoft Jet SQL for Access 2000
Вы найдете вполне немного больше на: https://stackoverflow.com/, включая добавление к Доступу MS, SQL Server, MySQL и т.д.