请问vlookup函数怎么对比两列,把第三列取过来?

a表: 订单号 货号 数量
b表: 订单号 货号 数量
在a表数量列中写公式,把B表中订单号、货号与A表的订单号、货号一样的,把B表的数量取到A表中对应行

1、创建excel,包含三列数据,订单号、货号、数量,插入A表的样例数据,

订单号    货号    数量    

1001    NO1    10    

1002    NO1    15    

1003    NO1    20    

1004    NO2    25    

1005    NO2    30    

1006    NO2    30

   

2、新建‘虚拟号’列,公式=F2&G2,值为1001NO1,其他单元格用同样的公式填充,

3、B表中插入样例数据,

订单号    货号    

1001    NO1    

1002    NO1    

1004    NO2    

1005    NO2    

4、新建‘虚拟号’列,公式=A2&B2,值为1001NO1,其他单元格用同样的公式填充,

5、在C2单元格,输入公式,=VLOOKUP(D2,G2:J7,4,FALSE),即可完成数据匹配,

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-09-20

该情况无法直接用vlookup函数完成,根据该案例的数据特点,下面提供一种添加辅助列结合vlookup函数的方法:

假设表A、表B如下图

表A

表B

第一步:在B表中“数量”列前插入一列“辅助列”

第二步:在辅助列中键入公式“A2&B2”,回车确定,向下填充。(此时辅助列数据为订单号和货号的合并)

第三步:在表A中“订单数量”第一个单元格输入公式:=VLOOKUP(C2&D2,B表!C1:D4,2,0),回车确认,向下填充,即得

第2个回答  2012-10-11
您可以使用 VLOOKUP 函数搜索某个单元格区域的第一列,然后返回该区域相同行上任何单元格中的值。例如,假设区域 A2:C10 中包含雇员列表,雇员的 ID 号存储在该区域的第一列,如下图所示。

如果知道雇员的 ID 号,则可以使用 VLOOKUP 函数返回该雇员所在的部门或其姓名。若要获取 38 号雇员的姓名,可以使用公式 =VLOOKUP(38, A2:C10, 3, FALSE)。此公式将搜索区域 A2:C10 的第一列中的值 38,然后返回该区域同一行中第三列包含的值作为查询值(“黄雅玲”)。

VLOOKUP 中的 V 表示垂直方向。当比较值位于所需查找的数据的左边一列时,可以使用 VLOOKUP 而不是 HLOOKUP。

语法
VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])
VLOOKUP 函数语法具有下列参数:
lookup_value 必需。要在表格或区域的第一列中搜索的值。lookup_value 参数可以是值或引用。如果为 lookup_value 参数提供的值小于 table_array 参数第一列中的最小值,则 VLOOKUP 将返回错误值 #N/A。
table_array 必需。包含数据的单元格区域。可以使用对区域(例如,A2:D8)或区域名称的引用。table_array 第一列中的值是由 lookup_value 搜索的值。这些值可以是文本、数字或逻辑值。文本不区分大小写。
col_index_num 必需。table_array 参数中必须返回的匹配值的列号。col_index_num 参数为 1 时,返回 table_array 第一列中的值;col_index_num 为 2 时,返回 table_array 第二列中的值,依此类推。

如果 col_index_num 参数:
小于 1,则 VLOOKUP 返回错误值 #VALUE!。
大于 table_array 的列数,则 VLOOKUP 返回错误值 #REF!。
range_lookup 可选。一个逻辑值,指定希望 VLOOKUP 查找精确匹配值还是近似匹配值:
如果 range_lookup 为 TRUE 或被省略,则返回精确匹配值或近似匹配值。如果找不到精确匹配值,则返回小于 lookup_value 的最大值。

要点 如果 range_lookup 为 TRUE 或被省略,则必须按升序排列 table_array 第一列中的值;否则,VLOOKUP 可能无法返回正确的值。

有关详细信息,请参阅对区域或表中的数据进行排序。

如果 range_lookup 为 FALSE,则不需要对 table_array 第一列中的值进行排序。
如果 range_lookup 参数为 FALSE,VLOOKUP 将只查找精确匹配值。如果 table_array 的第一列中有两个或更多值与 lookup_value 匹配,则使用第一个找到的值。如果找不到精确匹配值,则返回错误值 #N/A。

说明
在 table_array 的第一列中搜索文本值时,请确保 table_array 第一列中的数据不包含前导空格、尾部空格、非打印字符或者未使用不一致的直引号(' 或 ")与弯引号(‘或“)。否则,VLOOKUP 可能返回不正确或意外的值。

有关详细信息,请参阅 CLEAN 函数和 TRIM 函数。
在搜索数字或日期值时,请确保 table_array 第一列中的数据未存储为文本值。否则,VLOOKUP 可能返回不正确或意外的值。
如果 range_lookup 为 FALSE 且 lookup_value 为文本,则可以在 lookup_value 中使用通配符(问号 (?) 和星号 (*))。问号匹配任意单个字符;星号匹配任意字符序列。如果要查找实际的问号或星号,请在字符前键入波形符 (~)。

示例

示例 1

本示例搜索大气特征表的“密度”列以查找“粘度”和“温度”列中对应的值。(该值是在海平面 0 摄氏度或 1 个大气压下对空气的测定。)

如果将示例复制到一个空白工作表中,可能会更容易理解该示例。

如何复制示例?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

A

B

C

密度

粘度

温度

0.457

3.55

500

0.525

3.25

400

0.606

2.93

300

0.675

2.75

250

0.746

2.57

200

0.835

2.38

150

0.946

2.17

100

1.09

1.95

50

1.29

1.71

0

公式

说明

结果

=VLOOKUP(1,A2:C10,2)

使用近似匹配搜索 A 列中的值 1,在 A 列中找到小于等于 1 的最大值 0.946,然后返回同一行中 B 列的值。

2.17

=VLOOKUP(1,A2:C10,3,TRUE)

使用近似匹配搜索 A 列中的值 1,在 A 列中找到小于等于 1 的最大值 0.946,然后返回同一行中 C 列的值。

100

=VLOOKUP(0.7,A2:C10,3,FALSE)

使用精确匹配在 A 列中搜索值 0.7。因为 A 列中没有精确匹配的值,所以返回一个错误。

#N/A

=VLOOKUP(0.1,A2:C10,2,TRUE)

使用近似匹配在 A 列中搜索值 0.1。因为 0.1 小于 A 列中最小的值,所以返回一个错误。

#N/A

=VLOOKUP(2,A2:C10,2,TRUE)

使用近似匹配搜索 A 列中的值 2,在 A 列中找到小于等于 2 的最大值 1.29,然后返回同一行中 B 列的值。

1.71

注释 在 Excel Web App 中,若要按正确格式查看结果,请选择相应单元格,在“开始”选项卡的“数字”组中,单击“数字格式”旁边的箭头,然后单击“常规”。
第3个回答  2012-10-11
假设,B表数据位置是A2:C7
A表的数据位置是A2:B10
则,在C2输入,
=SUM(IF(b表!A$2:A$7=A2,IF(b表!B$2:B$7=B2,b表!C$2:C$7,0),0))
然后按F2,然后按CTRL+SHIFT+回车

再吧C2填充到C10,完成追问

刚按您的答案试了,没出来,特附上

A表

B表

请在A表F列中填写公式,拜谢!

追答

额,邮件给我发过来吧,看看哪里错了
现在回答里不敢上图,很容易就审批不过了
[email protected]

本回答被网友采纳
第4个回答  2012-10-11
哦 我没审好题,回答的不对了 vlookup函数好像是做不到的 我对函数使用的不多,如果可以用宏的话,我可以帮帮你
相似回答