在ACCESS里怎么实现VLOOKUP功能。

有表A,表B两个表。表A有两列(ID,姓名),表B有两列(姓名,成绩)。要求:做一个查询,实现表A数据不变(行数无增减),在表A的最后追加一列,显示表B中姓名与表A一样的人的成绩,如果没有一样的姓名,则该单元格空。

具体操作步骤如下:

1、首先,打开ACCESS,单击查询设计,如下图所示,然后进入下一步。

2、其次,选择所需的表(或查询),然后单击添加,如下图所示,然后进入下一步。

3、接着,建立连接。
 例如,在这种情况下,批号是公共字段。 方法是在生产表中按住批号并将其拖到检验表中的批号,如下图所示,然后进入下一步。

4、然后,选择所有连接属性,包括“生产”中的所有记录,如下图所示,然后进入下一步。

5、最后,双击所需字段就可以得到结果,如下图所示。这样,问题就解决了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-25
Access与Excel虽然都有表,但前者偏向处理信息,后者则偏向处理数据。
前者对于信息的处理一般用SQL指令来实现,而后者主要依靠现成的函数来处理数据。
所以,两者间有一定的联系不假,但其实质还是有很多区别的。
因此,Access中没有类似VLOOKUP的函数。。。
在Access中想实现你说的功能,有两种途径可供选择。
在说两种途径之前,先对你的表设计提出两点建议:
感觉你这样把表B的成绩追加到表A后,表B就无任何存在的意义了!只会造成数据重复,文件增大。
另外。你的表B中用姓名来处理数据,由于会出现重名重姓现象,显然这是这不科学的!
因此,个人觉得表B中还是用ID和成绩两列来的准确。。
所以下面我就以表A有两列(ID,姓名),表B有两列(ID,成绩)来加以说明:
一、建立表关系法。
首先,把表A和表B的ID字段全部设为主键(每个学生的ID是唯一的,这也是为什么不用姓名的原因)。
其次,点击【工具】菜单下的【关系】,弹出的窗口中点击【显示表】,添加表A和表B后退出【显示表】,然后拖到表A的ID向表B的ID重叠,这样就建立起了表关系。
最后,打开表A或表B看看吧!在每行的前面多了个加号,点击加号,你就会看到另一张的信息了。
二、建立查询窗体法。
点击【创建】下的“查询设计”,弹出的【显示表】中添加表A和表B后退出。
如果你没有用上面的方法创建表A或表B间的关系,这里需要拖到表A的ID向表B的ID重叠,如果已经创建了,此步可以省略。
双击表A和表B的两个ID之间的连线,弹出窗口中选“包括表A的所有字段和表B中连接字段相等的那些记录”,然后确定退出。
点选第一个字段,激活后点后面向下的按钮,选【表A.*】;同样方法在第二个字段处选【表B.成绩】
关闭并保存刚设计的查询窗体。双击打开刚保存的查询窗体,你可以看到数据按你的要求出来了。追问

非常感谢你的回答,但是我按照你说的方法2试了,的得到的结果和我想要的不一样,因为B表里的姓名不唯一,会有重复的情况。
我想要的是:和excel的vlookup一样的结果
A表有5行的话,显示的结果还是5行,B里有重复的话显示第一个查到的成绩

按照你说的方法的结果:
A表里的行数有增加,B表里重复的数据都显示出来了

我想要的结果能实现吗?

追答

当然可以实现了!
先说些废话:既然B表中有重复,显然B表就不能设置主键了。这样,我上面说的表关系中,A、B两表应该为一对多关系。。
好了,言归正传。。这里对上面的第二种方法做一修改:
点击【创建】下的“查询设计”,弹出的【显示表】中添加表A和表B后退出。
拖到表A的ID向表B的ID重叠。
点击上方的 ∑ ,进行汇总查询设计。
点选第一个字段,激活后点后面向下的按钮,选【表A.ID】;同样方法在第二个字段处选【表A.姓名】;同样方法在第三个字段处选【表B.成绩】。。总之把字段添加好。
【表】这一行显示“A表”的,其下面的【总计】处全部选“分组”;【表】这一行显示“B表”的,其下面的【总计】处全部选“第一条记录”(这时候上面对应的【字段】处会显示:XX之第一条记录: XX ,你可以把“XX之第一条记录”随意修改为除 XX 外的任何内容,比如修改为:XX分: XX )。
关闭并保存刚设计的查询窗体。双击打开刚保存的查询窗体,你可以看到数据按你的要求出来了。

本回答被提问者和网友采纳
第2个回答  2018-06-27
在Access中,Dlookup 与Excel中的VLOOKUP函数功能是相同的:

简单解释
DLookup(要查的字段, 要查的表, 查询条件 )
例如,要找的A同学的性别:
DLookup("[性别]","学生信息表", “[姓名] = 'A'" )

引申:以下是专业的解释

语法:
DLookup(expr, domain, [criteria])
参数解释:
expr:要获取值的字段名称
domain :要获取值的表或查询名称
criteria:用于限制 DLookup 函数执行的数据范围。如果不给 criteria 提供值,Dlookup 函数将返回域中的一个随机值。

正常用法
用于数值型条件值:
DLookup("字段名称" , "表或查询名称" , "条件字段名 = n")

用于字符串型条件值:(注意字符串的单引号不能丢失)
DLookup("字段名称" , "表或查询名称" , "条件字段名 = '字符串值'")

用于日期型条件值:(注意日期的#号不能丢失)
DLookup("字段名称" , "表或查询名称" , "条件字段名 = #日期值#")

从窗体控件中引用条件值用法

用于数值型条件值:
DLookup("字段名称" , "表或查询名称" , "条件字段名 =" &
forms!窗体名!控件名)

用于字符串型条件值:(注意字符串的单引号不能丢失)
DLookup("字段名称" , "表或查询名称" , "条件字段名 = '" &
forms!窗体名!控件名 & "'")

用于日期型条件值:(注意日期的#号不能丢失)
DLookup("字段名称" , "表或查询名称" , "条件字段名 = #" &
forms!窗体名!控件名 & "#")

混合使用方法(支持多条件)

在这种方法中也可以在条件中写入固定的值。
DLookup("字段名称" , "表或查询名称" , "条件字段名1 = " & Forms!窗体名!控件名1 _
& " AND 条件字段名2 = '" & Forms!窗体名!控件名2 & "'" _
& " AND 条件字段名3 =#" & Forms!窗体名!控件名3 & "#")

注:
Dlookup之类的合计函数(域函数)是ACCESS为用户提供的内置函数,通过这些函数可以方便的从一个表或查询中取得符合一定条件的值赋予变量或控件值,就不需要再用DAO或者ADO打开一个记录集,然后再去从中获取一个值,这样所写的代码要少的多。
但是如果需要更灵活的设计,比如所查询的域没有在一个固定的表或查询里,而是一个动态的SQL语法,或是临时生成的复杂的SQL语句,亦或是需要代入循环的条件值等,此时还是需要从DAO或者ADO中定义记录集来获取值。因为Dlookup之类的合计函数必竟是一个预定义好格式的函数,所支持的语法有限,但对于大多数的要求是都能够满足的。
第3个回答  2012-11-19
Access里面没有VLOOKUP函数,用SQL指令,UPDATE下数据
相似回答