Kann ich mit SQL eine Excel-Datentabelle aus anderen Excel-Dateien erstellen?

3

Ich kenne SQL gut genug, um grundlegende Abfragen durchzuführen und Daten zu bearbeiten, die in mehrere Tabellen in einer Datenbank aufgeteilt sind. Ich kenne Excel 2007 ein bisschen besser und verwende es häufig, um meine Maschinenbauprojekte zu verwalten.

Manchmal möchte ich in Excel Daten aus mehreren Arbeitsblättern bearbeiten und in einer Tabelle zusammenfassen - eine Aufgabe, die für eine SQL-Abfrage gut geeignet ist. Wenn ich auf solche Probleme stoße, reagiere ich normalerweise sofort darauf, eine Abfrage in meinem Kopf zu erstellen. Leider lassen sich SQL-Abfragen häufig nicht ohne weiteres in Excel-Funktionen umsetzen, was mich aufhält.

Ist es möglich, SQL für diese Funktionen in Excel zu verwenden?

NoCatharsis
quelle

Antworten:

4

Sie können ADO mit Excel VBA verwenden. Zum Beispiel:

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

Für die Abfrage kann in Jet SQL Folgendes verwendet werden:

Fundamental Microsoft Jet SQL for Access 2000
Intermediate Microsoft Jet SQL for Access 2000
Advanced Microsoft Jet SQL for Access 2000

Sie werden viel mehr finden über: https://stackoverflow.com/ , einschließlich Hinzufügen zu MS Access, SQL Server, MySQL und so weiter.

Remou
quelle
Vielen Dank - wow, das ist ein bisschen mehr als ich dachte. Ich werde einige Lösungen zu S.O. und vielleicht auch nur meine Daten direkt in eine kleine Datenbank zu übertragen.
NoCatharsis
1

Ihr Fall ist genau so, wie ich es vor ein paar Monaten getan habe. Ich versuche auch, jedes Mal, wenn ich Daten in Excel bearbeiten muss, eine SQL-Abfrage in meinem Kopf zu erstellen. Also habe ich ein kleines Add-In namens erstellt XLTools SQL-Abfragen . Jetzt habe ich es auf unserer Website für andere wie Sie und mich veröffentlicht!

Es ermöglicht die Erstellung von SQL-Abfragen für Tabellen in Excel-Arbeitsmappen mithilfe des eingebetteten SQL-Editors und deren sofortige Ausführung mit der Option, Ergebnisse in ein neues oder ein vorhandenes Arbeitsblatt einzufügen.

Es ist viel einfacher zu verwenden, wenn Sie nur eine SQL-Abfrage erstellen und ausführen müssen - keine VBA, keine komplexen Manipulationen mit MS Query ...

Hier ist ein Beispiel:

XLTools SQL Queries - Query Builder

Peter Liapin
quelle