9

我正在尝试开发一个可以在外部数据源中找到相应记录的电子表格。所以,假设我有一个带有标识值列表的 A 列。我想开发 B 列,它可能显示表中具有该值的行数。就像是:

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

... 等等。所以,我想我会使用参数化查询(其中 IDVALUE=?),但这会提示我输入参数值,而不是使用左侧单元格中的值。有什么办法可以做到这一点吗?

4

2 回答 2

20

我会使用参数化查询(其中 IDVALUE=?),但这会提示我输入参数值

根据您提到的内容,我了解您正在使用 MS Query,您需要按照以下步骤操作

在 Excel 中进行参数化查询的步骤使用单元格值作为参数

  1. 首先转到 Excel 中的数据选项卡,然后在外部数据源下选择 MS Query

微软查询

  1. 将出现一个弹出窗口,要求您选择数据源。选择数据源或添加新数据源并选择它。确保取消选中Use the query wizard to create or edit queries它在大多数情况下不是很有用

数据源

  1. 然后出现一个弹出窗口,要求您添加表格,请暂时选择任何表格。最好选择行数较少的表。

添加表

  1. 然后出现一个查询窗口,其中包含您选择的表及其数据

查询窗口

  1. 然后单击view菜单并取消选中tables。这将删除查询窗口中的图形表示,并使其更容易改变你的 sql 查询

查看菜单

  1. 单击查询窗口中菜单SQL下方的按钮。format出现一个弹出窗口,您可以根据需要编辑查询。确保为所需的参数添加问号。

编辑查询

  1. 然后出现一个弹出窗口,要求您输入参数值,请暂时输入一些有效值

范围

  1. 然后查询窗口根据输入的参数显示查询结果

结果

  1. 单击查询窗口中菜单exit下方的按钮。view然后查询窗口关闭并弹出导入数据,询问在 excel 中的何处显示结果。相应地选择

进口

  1. 然后单击左侧的属性按钮,然后单击确定。将出现一个新的弹出窗口,其中选择了默认使用选项卡。

特性

  1. 在此选项卡中进行所需的任何更改,然后单击Definition选项卡。单击Parameters按钮旁边弹出窗口底部的edit query按钮

定义

  1. Parameters弹出窗口显示查询中使用的参数。在这里,您必须选择Get the value from following cell单选按钮以选择单元格的值作为查询的参数。单击确定,您应该完成。

    参数值


此方法适用于没有 VBA 经验的人。如果您了解 VBA,请参考此答案以使用 VBA 实现类似的功能。

于 2014-10-18T18:45:13.983 回答
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

于 2017-03-15T14:22:37.703 回答