J'ai un grand tableau 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
Vous pouvez utiliser Get External Data
_ (indiquez son nom), situé dans l'onglet "Données" d'Excel 2010, pour configurer un connection
dans un classeur afin d'interroger des données à partir de lui-même. Utilisation From Other Sources
From Microsoft Query
pour se connecter à Excel
Une fois configuré, vous pouvez utiliser VBA
pour manipuler le connection
afin, entre autres, d’afficher et de modifier la commande SQL qui pilote la requête. Cette requête ne fait référence au classeur en mémoire, vous n'avez donc pas besoin d'une sauvegarde pour actualiser les dernières données.
Voici un rapide Sub
pour montrer comment accéder aux objets de connexion
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
Si vous pouvez enregistrer le classeur, vous avez la possibilité d'utiliser ADO et Jet/ACE pour traiter le classeur comme une base de données et exécuter SQL sur la feuille.
Les informations MSDN sur la façon de frapper Excel avec ADO peuvent être trouvées ici .
Parfois, SUM_IF peut faire le travail.
Supposons que vous disposiez d’une feuille d’informations sur le produit, y compris unique productID
dans la colonne A et d’un prix unitaire dans la colonne P. Une feuille d’entrées de commande avec les ID de produit dans la colonne A et que vous souhaitiez que la colonne T calcule l’unité prix pour l'entrée.
La formule suivante fera l'affaire dans les entrées de cellule! T2 et peut être copiée dans les autres cellules de la même colonne.
=SUMIF(Products!$A$2:$A$9999,Entries!$A2, Products!$P$2:$9999)
Vous pouvez ensuite avoir une autre colonne avec le nombre d'articles par entrée et la multiplier par le prix unitaire pour obtenir le coût total de l'entrée.
Une méthode rapide consiste à créer une colonne avec une formule qui vaut True pour les lignes qui vous intéressent, puis filtre pour la valeur TRUE dans cette colonne.