How to use parameterized query in Excel using colu

2019-01-25 13:38发布

I am trying to develop a spreadsheet that can locate corresponding records in an external data source. So, let's say I have Column A with a list of identity values. I want to develop Column B, which perhaps shows a count of rows in the table with that value. Something like:

A              B
758348    "=SELECT COUNT(*) FROM MYTABLE WHERE IDVALUE=$A$1"
173483    "=SELECT COUNT(*) FROM MYTABLE WHERE IDVALUE=$A$2"

... and so on. So, I thought I would use a parameterized query (where IDVALUE=?), but that prompts me to input the parameter value, not use the value from the cell to the left. Is there any way I can do this?

2条回答
Evening l夕情丶
2楼-- · 2019-01-25 13:49

I would use a parameterized query (where IDVALUE=?), but that prompts me to input the parameter value

From what you mentioned I under stand you are using MS Query and you need to follow the following steps

Steps to make a parameterized query in Excel use a cell value as parameter

  1. First go to the Data tab in Excel and Select MS Query under External Data Sources

MS Query

  1. A pop up appears asking you to choose data source. Select the data source or add a new data source and select it. Make sure to uncheck Use the query wizard to create or edit queries it is not very useful in most cases

Data Source

  1. Then a pop up appears asking you to add table select any table for now. It is better to select a table with less rows.

add table

  1. Then a Query window appears with the table you have selected and its data

query window

  1. Then click on the view menu and uncheck tables. This removes the graphically representation in query window and makes it easier to alter you sql query

View menu

  1. Click on the SQL button below the format menu in query window. A pop up comes where you can edit the query as you wish. Make sure to add question mark(s) for the parameter(s) you want.

edit query

  1. Then a pop up appears ask you for parameter value(s) enter some valid value for now

parameter

  1. Then the query window shows the result of query based on the parameter entered

result

  1. Click on the exit button below the view menu in query window. Then the query window closes and Import Data pop up comes asking where in excel to display the result. Choose accordingly

import

  1. Then click on Properties button on left before you click OK. A new pop up appears with the default usage tab selected.

Properties

  1. Make any changes needed in this tab and click on Definition tab. Click on Parameters button in bottom of the pop up next to edit query button

Definition

  1. Parameters pop up comes displaying the parameters used in the query. Here you must select the Get the value from following cell radio button to select the value of cell as the parameter for the query. Click OK and you should be done.

    parameter value


This method is for people with no VBA experience. If you know VBA then refer to this answer to achieve the something similar using VBA.

查看更多
我只想做你的唯一
3楼-- · 2019-01-25 14:02

So to do this I would create a UDF and have the backend of that function connecting to your access database. Something like this:

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

Hope this helps, TheSilkCode

查看更多
登录 后发表回答