J'essaie de développer une feuille de calcul qui peut localiser les enregistrements correspondants dans une source de données externe. Supposons donc que j'ai la colonne A avec une liste de valeurs d'identité. Je veux développer la colonne B, qui montre peut-être un nombre de lignes dans la table avec cette valeur. Quelque chose comme:
A B
758348 "=SELECT COUNT(*) FROM MYTABLE WHERE IDVALUE=$A$1"
173483 "=SELECT COUNT(*) FROM MYTABLE WHERE IDVALUE=$A$2"
... etc. J'ai donc pensé utiliser une requête paramétrée (où IDVALUE =?), Mais cela m'invite à saisir la valeur du paramètre, pas à utiliser la valeur de la cellule de gauche. Existe-t-il un moyen de le faire?
J'utiliserais une requête paramétrée (où IDVALUE =?), Mais cela m'invite à saisir la valeur du paramètre
D'après ce que vous avez mentionné, je comprends que vous utilisez MS Query et vous devez suivre les étapes suivantes
Étapes pour effectuer une requête paramétrée dans Excel utiliser une valeur de cellule comme paramètre
Use the query wizard to create or edit queries
ce n'est pas très utile dans la plupart des casview
et décochez tables
. Cela supprime la représentation graphique dans la fenêtre de requête et facilite la modification de votre requête SQLSQL
sous le menu format
dans la fenêtre de requête. Une fenêtre contextuelle apparaît où vous pouvez modifier la requête comme vous le souhaitez. Assurez-vous d'ajouter des points d'interrogation pour le ou les paramètres souhaités.exit
sous le menu view
dans la fenêtre de requête. Ensuite, la fenêtre de requête se ferme et la fenêtre contextuelle Importer des données vous demande où dans Excel afficher le résultat. Choisissez en conséquenceDefinition
. Cliquez sur le bouton Parameters
en bas de la fenêtre contextuelle à côté de edit query
boutonParameters
une fenêtre contextuelle affiche les paramètres utilisés dans la requête. Ici, vous devez sélectionner le Get the value from following cell
bouton radio pour sélectionner la valeur de la cellule comme paramètre pour la requête. Cliquez sur OK et vous devriez avoir terminé.
Cette méthode est destinée aux personnes sans expérience VBA. Si vous connaissez VBA, référez-vous à ceci réponse pour obtenir quelque chose de similaire en utilisant VBA.
Donc, pour ce faire, je créerais un UDF et le backend de cette fonction se connecte à votre base de données d'accès. Quelque chose comme ça:
Public Function countMyTable(IDValue As Double) As Long
'Requires:// Microsoft Access 16.0 Object Library
'Requires:// Microsoft Office 16.0 Access database engine Object Library
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = Access.DBEngine.Workspaces(0).OpenDatabase(DBFilePath, False, False)
Set rs = db.OpenRecordset("SELECT COUNT(1) FROM MyTable WHERE IDValue = " & IDValue, dbOpenSnapshot)
rs.MoveLast
countMyTable = rs(0)
db.close
End Function
J'espère que cela vous aide, TheSilkCode