我正在尝试开发一个可以在外部数据源中找到相应记录的电子表格。所以,让我们说我的列A带有一个标识值列表。我想开发B列,它可能会显示表中具有该值的行数。类似的东西:
A B
758348 "=SELECT COUNT(*) FROM MYTABLE WHERE IDVALUE=$A$1"
173483 "=SELECT COUNT(*) FROM MYTABLE WHERE IDVALUE=$A$2"
......等等。所以,我以为我会使用参数化查询(其中IDVALUE =?),但这会提示我输入参数值,而不是使用左边单元格中的值。我有什么方法可以做到这一点吗?
答案 0 :(得分:16)
我会使用参数化查询(其中IDVALUE =?),但会提示 我输入参数值
根据您的提及,我正在使用MS Query,您需要按照以下步骤进行操作
在Excel中进行参数化查询的步骤使用单元格值作为参数
Use the query wizard to create or edit queries
在大多数情况下它不是很有用
view
菜单,取消选中tables
。这将删除查询窗口中的图形表示,并使您更容易更改您的SQL查询
SQL
菜单下方的format
按钮。弹出窗口可以根据需要编辑查询。确保为所需的参数添加问号。
exit
菜单下方的view
按钮。然后关闭查询窗口,弹出导入数据,询问excel中的哪个位置显示结果。相应地选择
Definition
标签。点击Parameters
按钮edit query
按钮
醇>
Parameters
弹出窗口显示查询中使用的参数。在这里,您必须选择Get the value from following cell
单选按钮以选择单元格的值作为查询的参数。单击确定,您应该完成。
此方法适用于没有VBA经验的人士。如果您了解VBA,请参考此answer以使用VBA实现类似的功能。
答案 1 :(得分:0)
为此,我将创建一个UDF并将该函数的后端连接到您的访问数据库。像这样:
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
希望这会有所帮助,TheSilkCode