59 votes

Fonction Excel pour effectuer des requêtes de type SQL sur des données de feuille de calcul?

J'ai une grande table dans une feuille de calcul Excel:

 Column_1 | Column_2 | Column_3

ValueA       ValueB     ValueC
....
 

Ce dont j'ai besoin est une fonction qui prend en entrée la plage et une chaîne de requête de type SQL et renvoie une plage de lignes correspondant à la requête, par exemple:

 =SQL_SELECT(A1:C1000, "SELECT * WHERE Column_1 = ValueH AND Column_3 = blah")
 

Est-ce que quelque chose comme ça existe? Ou quel serait le meilleur moyen de me mettre en œuvre?

Merci

50voto

chris neilsen Points 21247

Vous pouvez utiliser Get External Data (malgré son nom) pour mettre en place un connection dans un classeur pour interroger les données de lui-même. Utiliser From Other Sources From Microsoft Query pour vous connecter à Excel

Une fois mis en place, vous pouvez utiliser VBA de manipuler l' connection , entre autre chose, d'afficher et de modifier la commande SQL que les lecteurs de la requête. Cette requête fait référence à la mémoire classeur, afin de ne débite pas besoin d'un enregistrer pour actualiser les données les plus récentes.

Voici un rapide Sub de démontrer l'accès à la connexion des objets

Sub DemoConnection()
    Dim c As Connections
    Dim wb As Workbook
    Dim i As Long
    Dim strSQL As String

    Set wb = ActiveWorkbook
    Set c = wb.Connections
    For i = 1 To c.Count
        ' Reresh the data '
        c(i).Refresh 
        ' view the SQL query '
        strSQL = c(i).ODBCConnection.CommandText
        MsgBox strSQL
    Next
End Sub

5voto

Jon Egerton Points 16192

Si vous pouvez enregistrer le classeur, vous avez la possibilité d'utiliser ADO et Jet / ACE pour le traiter en tant que base de données et exécuter le code SQL sur la feuille.

Les informations MSDN sur la manière de frapper Excel avec ADO sont disponibles ici .

1voto

Nasorenga Points 41

Parfois SUM_IF pouvez obtenir le travail fait. Supposons que vous avez une feuille de renseignements sur les produits, y compris unique productID dans la colonne A et le prix à l'unité dans la colonne P. Et une feuille de commande d'achat les entrées avec des Id de produit dans la colonne A, et vous souhaitez colonne T pour calculer le prix à l'unité pour l'entrée.

La formule suivante fera l'affaire dans la cellule des Entrées!T2 et peuvent être copiés sur les autres cellules de la même colonne.

=SUMIF(Produits!$A$2:$A$9999,Des Entrées!$A2, Produits De!$P$2:$9999)

Vous pourriez avoir une autre colonne avec le nombre d'éléments par l'entrée et le multiplier avec le prix à l'unité pour obtenir le coût total pour l'entrée.

0voto

Milad Naseri Points 2317

Je pense que ce que vous recherchez, c'est le filtrage Excel : Filtrage Excel

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X