Puis-je utiliser SQL pour créer une table de données Excel à partir d'autres fichiers Excel?

Je connais assez bien SQL pour effectuer des requêtes basiques et manipuler des données divisées en plusieurs tables dans une base de données. Je connais un peu mieux Excel 2007 et je l'utilise souvent pour gérer mes projets d'ingénierie mécanique.

Parfois, dans Excel, je souhaite manipuler des données à partir de plusieurs feuilles de calcul et combiner une seule table – une tâche bien adaptée à une requête SQL. Habituellement, quand je rencontre des problèmes comme celui-ci, ma réaction immédiate consiste à commencer à créer une requête dans ma tête. Malheureusement, beaucoup de fois, les requêtes SQL ne se transforment pas facilement en fonctions Excel et cela m'empêche.

Est-il possible d'utiliser SQL pour ces fonctions dans Excel?

Vous pouvez utiliser ADO avec Excel VBA. Par exemple:

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 

La requête peut utiliser tout ce qui est acceptable dans Jet SQL:

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

Vous trouverez un peu plus sur: http: // https: //stackoverflow.com/ , y compris l'ajout à MS Access, SQL Server, MySQL et ainsi de suite.

Votre cas est exactement comme j'avais quelques mois. J'essaie également de créer une requête SQL dans ma tête chaque fois que je dois manipuler certaines données dans Excel. Donc, j'ai créé un petit complément appelé XLTools SQL Queries . Maintenant, je l'ai publié sur notre site Web pour d'autres comme vous et moi!

Il permet de construire n'importe quelle requête SQL contre des tables dans des classeurs Excel à l'aide de l'éditeur SQL incorporé et l'exécuter immédiatement avec l'option de mettre un résultat sur une feuille de calcul nouvelle ou toute autre.

Il est beaucoup plus facile à utiliser si vous avez juste besoin de créer et exécuter une requête SQL – pas de VBA, pas de manipulations complexes avec MS Query …

Voici un exemple:

XLTools SQL Queries - Query Builder