Access如何实现类似Excel INDEX MATCH的按编码跨表调用信息功能
Access 实现跨表匹配调取信息(等效Excel INDEX+MATCH功能)
两张测试表结构参考:

Access中实现「输入编码自动匹配另一张表关联信息」的逻辑和Excel INDEX+MATCH完全一致,都是按共同编码字段做关联匹配,有3种可直接落地的实现方式:
方法1:建立表关系+绑定查询(零代码,适合日常表操作)
- 打开数据库的「关系」编辑窗口,添加
ind和sam两张表 - 拖动
ind表中存储编码的字段(即输入it20的字段),连线到sam表对应的编码字段,双击连线可按需勾选参照完整性,避免输入不存在的无效编码 - 新建选择查询,将
ind表需要展示的字段、sam表需要调取的所有关联字段拖入查询设计网格,保存查询即可。后续在ind表输入编码后,打开该查询就能自动带出所有匹配的关联信息。
方法2:DLookup函数(和INDEX+MATCH逻辑完全对齐,适合窗体实时填充)
如果是在窗体端输入编码,需要输入后立刻自动填充对应信息,直接在待填充控件的「控件来源」属性中写DLookup表达式即可,语法对应关系:
- Excel INDEX+MATCH逻辑:
=INDEX(返回值列, MATCH(查找值, 查找列, 0)) - Access DLookup逻辑:
=DLookup("返回值字段名", "查找表名", "查找字段名='" & 查找值控件 & "'")
举个实际使用例子:如果要从sam表调取「物品名称」字段,输入编码的输入框控件名为txt_input_code,sam表存储编码的字段名为item_code,直接填入以下表达式即可:
=DLookup("物品名称", "sam", "item_code='" & [txt_input_code] & "'")
注意:如果编码字段是数字类型,去掉表达式里的单引号,写成
"item_code=" & [txt_input_code]即可。输入编码后控件会自动完成匹配填充,无需额外触发。
方法3:SQL关联查询(适合批量匹配全量数据)
如果需要一次性匹配ind表所有记录的关联信息,直接运行关联查询SQL即可,效率远高于Excel下拉公式,适合万级以上数据量场景:
SELECT ind.*, sam.物品名称, sam.规格, sam.单价 FROM ind LEFT JOIN sam ON ind.编码字段名 = sam.编码字段名;
执行后会返回ind表的全部记录,以及匹配到的sam表对应字段值,和全列下拉INDEX+MATCH的效果完全一致。
内容的提问来源于stack exchange,提问作者Exir PJam
相关产品推荐
相关产品推荐

