Vlookup 根据对应两列,标记第三列 及其他(例如根据人名找学号)

本文详细介绍了Excel中的VLOOKUP函数,包括其基本语法、参数解析和实际应用示例。VLOOKUP用于在指定区域内查找目标值,并返回相应列的数据。在例子中,通过VLOOKUP查找姓名对应年龄,强调了查找目标、查找范围、返回列数和精确查找的重要性。了解这些基础知识是掌握VLOOKUP函数的关键。

 VLOOKUP函数是Excel中几个最重函数之一,为了方便大家学习,特针对VLOOKUP函数的使用和扩展应用,进行一次全面综合的说明。本文为入门部分

     一、入门级

      VLOOKUP是一个查找函数,给定一个查找的目标,它就能从指定的查找区域中查找返回想要查找到的值。它的基本语法为:

      VLOOKUP(查找目标,查找范围,返回值的列数,精确OR模糊查找)

下面以一个实例来介绍一下这四个参数的使用

     例1:如下图所示,要求根据表二中的姓名,查找姓名所对应的年龄。  

   公式:B13 =VLOOKUP(A13,$B$2:$D$8,3,0)  

   参数说明:

       1 查找目标:就是你指定的查找的内容或单元格引用。本例中表二A列的姓名就是查找目标。我们要根据表二的“姓名”在表一中A列进行查找。

        公式:B13 =VLOOKUP(A13,$B$2:$D$8,3,0)   

       2 查找范围(VLOOKUP(A13,$B$2:$D$8,3,0) ):指定了查找目标,如果没有说从哪里查找,EXCEL肯定会很为难。所以下一步我们就要指定从哪个范围中进行查找。VLOOKUP的这第二个参数可以从一个单元格区域中查找,也可以从一个常量数组或内存数组中查找。本例中要从表一中进行查找,那么范围我们要怎么指定呢?这里也是极易出错的地方。大家一定要注意,给定的第二个参数查找范围要符合以下条件才不会出错:

        A 查找目标一定要在该区域的第一列。本例中查找表二的姓名,那么姓名所对应的表一的姓名列,那么表一的姓名列(列)一定要是查找区域的第一列。象本例中,给定的区域要从第二列开始,即$B$2:$D$8,而不能是$A$2:$D$8。因为查找的“姓名”不在$A$2:$D$8区域的第一列。

        B 该区域中一定要包含要返回值所在的列,本例中要返回的值是年龄。年龄列(表一的D列)一定要包括在这个范围内,即:$B$2:$D$8,如果写成$B$2:$C$8就是错的。

       3 返回值的列数(B13 =VLOOKUP(A13,$B$2:$D$8,3,0))。这是VLOOKUP第3个参数。它是一个整数值。它怎么得来的呢。它是“返回值”在第二个参数给定的区域中的列数。本例中我们要返回的是“年龄”,它是第二个参数查找范围$B$2:$D$8的第3列。这里一定要注意,列数不是在工作表中的列数(不是第4列),而是在查找范围区域的第几列。如果本例中要是查找姓名所对应的性别,第3个参数的值应该设置为多少呢。答案是2。因为性别在$B$2:$D$8的第2列中。

       4 精确OR模糊查找(VLOOKUP(A13,$B$2:$D$8,3,0)  ),最后一个参数是决定函数精确和模糊查找的关键。精确即完全一样,模糊即包含的意思。第4个参数如果指定值是0或FALSE就表示精确查找,而值为1 或TRUE时则表示模糊。这里兰色提醒大家切记切记,在使用VLOOKUP时千万不要把这个参数给漏掉了,如果缺少这个参数默为值为模糊查找,我们就无法精确查找到结果了。  

      好了,关于VLOOKUP函数的入门级应用就说到这里,VLOOKUP函数可不只是这么简单的查找,我们讲的还只是1/10的用法。其他的没法在一篇文章中说明。敬请期待“VLOOKUP的使用方法-进阶篇”吧。

<think>我们参考多个引用,特别是引用[3]和引用[4]中详细描述了VLOOKUP函数的使用方法。 用户的需求是:将一张表的一列数据对应到另外一张表的两列数据。这里有两种理解: 1. 将源表(另一张表)中的两列数据同时匹配到目标表(一张表)中。由于VLOOKUP每次只能返回一列,所以需要分别匹配两次。 2. 或者用户可能是想根据两列数据作为匹配条件(即复合键)来查?但VLOOKUP通常只支持单列作为查值。 但根据用户的描述“将一张表的一列数据对应到另外一张表两列数据”,更可能是第一种情况:即目标表有一列数据(比如姓名),而源表有两列数据(比如姓名和电话、姓名和地址等),现在要根据姓名将源表中的两列数据都匹配到目标表中。 因此,我们可以这样操作: 步骤1:在目标表中,先使用VLOOKUP函数匹配源表的第一列数据(例如,源表有两列:姓名和电话,现在匹配电话)。 步骤2:再使用一次VLOOKUP函数匹配源表的第二列数据(例如,匹配地址)。 注意:VLOOKUP函数一次只能返回一列,所以需要分两次操作。 但是,如果用户的意思是:目标表有两列数据作为匹配条件(比如“姓”和“名”两列),而源表也有对应两列(“姓”和“名”),需要合并这两列作为匹配条件,那么我们可以通过添加辅助列的方式,将两列合并成一列,然后使用VLOOKUP。 然而,根据用户问题的字面意思,我们按照第一种情况来处理。 下面我们详细说明第一种情况的步骤: 假设: 目标表(表1)有: A列:姓名(用于匹配的关键列) 需要将源表(表2)中的B列(电话)和C列(地址)匹配过来。 步骤: 1. 在目标表(表1)中,插入两列,分别用于存放电话和地址(比如插入在B列和C列,原来B列及以后的数据右移)。 2. 在目标表B1单元格输入“电话”,C1单元格输入“地址”。 3. 在目标表B2单元格输入VLOOKUP函数,用于匹配电话: =VLOOKUP(A2, 源表!$A$2:$C$100, 2, FALSE) 解释: A2:目标表当前行的姓名(匹配依据) 源表!$A$2:$C$100:源表的数据区域(注意:这个区域必须包含匹配列(姓名)和要返回的列(电话、地址),并且匹配列(姓名)必须在这个区域的第一列) 2:表示要返回数据区域的第2列(即电话列) FALSE:精确匹配 4. 在目标表C2单元格输入VLOOKUP函数,用于匹配地址: =VLOOKUP(A2, 源表!$A$2:$C$100, 3, FALSE) 这里第三个参数改为3,表示返回数据区域的第3列(地址列) 5. 将B2和C2的公式向下填充。 注意:数据区域(源表!$A$2:$C$100)要使用绝对引用(加$符号),这样下拉填充时区域不会变化。区域大小根据实际情况调整。 但是,如果源表的两列数据需要匹配到目标表,并且这两列在源表中并不是相邻的,那么我们需要分别指定两个不同的区域,或者使用两个不同的列索引号。 另外,如果匹配条件(姓名)在源表中不是第一列,那么我们需要调整数据区域,确保匹配列(姓名)在区域的第一列。如果源表中匹配列不在第一列,我们可以调整引用的区域,或者使用其他方法(例如INDEX+MATCH组合)。 然而,用户的问题中强调“另一张表两列数据”,我们假设这两列数据在源表中是相邻的,并且匹配列在它们前面(即匹配列是源表的第一列,要返回的两列分别是第二列和第三列)。 如果实际情况不是这样,比如源表中匹配列不在第一列,那么我们可以使用以下两种方法之一: 方法1:使用辅助列,将要匹配的列移动到第一列(复制或剪切插入)。 方法2:使用INDEX和MATCH函数组合,这样更灵活,可以不要求匹配列在数据区域的第一列。 但是用户要求使用VLOOKUP函数,所以我们优先考虑调整数据区域,使匹配列位于第一列。 总结步骤: 1. 在目标表新增两列(假设放在B列和C列)。 2. 在B2写公式:=VLOOKUP(匹配依据单元格, 源表数据区域, 返回列序号1, FALSE) 3. 在C2写公式:=VLOOKUP(匹配依据单元格, 源表数据区域, 返回列序号2, FALSE) 4. 下拉填充。 注意:两个公式的数据区域是同一个,但是返回列序号不同。 举例说明: 目标表(表1): A B C 1 姓名 电话 地址 2 张三 源表(表2): A B C 1 姓名 电话 地址 2 张三 138... 北京市 在目标表B2输入:=VLOOKUP(A2, 源表!$A$2:$C$100, 2, FALSE) 在目标表C2输入:=VLOOKUP(A2, 源表!$A$2:$C$100, 3, FALSE) 这样,张三的电话和地址就匹配过来了。 引用说明:以上方法参考了引用[3][^3]和引用[4][^4]中的步骤。 如果用户想要匹配两列在源表中不是连续的,比如电话在第2列,地址在第4列,那么我们可以分别写两个区域,但要确保匹配列(姓名)在区域的第一列: 电话:=VLOOKUP(A2, 源表!$A$2:$D$100, 2, FALSE) // 区域包含第1列(姓名)到第4列(地址),电话在第2列 地址:=VLOOKUP(A2, 源表!$A$2:$D$100, 4, FALSE) // 同一个区域,地址在第4列 但是,如果地址列不在这个区域内,我们就需要调整区域,或者使用其他方法。 注意:VLOOKUP函数要求查值必须在数据区域的第一列。 因此,在操作之前,需要确保源表的数据区域设置正确。 如果用户的问题是指通过两列数据作为条件(比如姓和名两列)来匹配,则可以采用以下步骤: 1. 在目标表和源表都添加辅助列,将两列合并成一列(例如,=A2&B2),这样生成一个唯一的匹配键。 2. 然后使用这个匹配键进行VLOOKUP。 但是,由于用户描述的是“将一张表的一列数据对应到另外一张表两列数据”,我们理解为将源表中的两列数据提取到目标表,所以按第一种情况处理。 下面我们按第一种情况写出详细步骤: 步骤: 1. 打开目标表,在需要的位置插入新的列(用于存放匹配过来的数据)。 2. 在目标表第一个数据单元格(例如B2)输入公式: =VLOOKUP($A2, 源表!$A$2:$C$100, COLUMN(B1), FALSE) 注意:这里使用COLUMN函数可以动态返回列号,但前提是源表数据区域中第一列是匹配列(姓名),第二列是电话,第三列是地址,并且目标表新增的两列正好对应源表的第二列和第三列。 但是,更简单的方法是分别写两个VLOOKUP,分别指定列号。 3. 向右拖动填充第二个数据列(地址),然后向下填充所有行。 但是,向右拖动填充时,列号需要递增,我们可以使用COLUMN函数来动态获取列号,但要注意调整。 例如,在B2输入: =VLOOKUP($A2, 源表!$A$2:$C$100, 2, FALSE) 在C2输入: =VLOOKUP($A2, 源表!$A$2:$C$100, 3, FALSE) 这样更清晰。 综上所述,我们给出以下解决方案: 解决方案: 假设目标表为Sheet1,源表为Sheet2。 目标表A列为姓名(匹配列),需要将源表中电话(B列)和地址(C列)匹配过来。 步骤: 1. 在Sheet1的B1单元格输入“电话”,C1单元格输入“地址”。 2. 在B2单元格输入公式:=VLOOKUP($A2, Sheet2!$A$2:$C$100, 2, FALSE) 3. 在C2单元格输入公式:=VLOOKUP($A2, Sheet2!$A$2:$C$100, 3, FALSE) 4. 选中B2:C2,将鼠标放在C2单元格右下角,出现填充柄(黑色十字)时,双击(或下拉)填充至最后一行。 注意: - $A2:列绝对引用,行相对引用,这样公式向右填充时列不变,向下填充时行变化。 - Sheet2!$A$2:$C$100:源表的数据区域,使用绝对引用,防止填充时变动。请根据实际数据范围修改(如数据到100行就写$C$100,如果更多则修改为$C$500等)。 - 第三个参数:2表示返回数据区域的第2列(即电话),3表示返回第3列(地址)。 - FALSE:精确匹配。 如果匹配不到,公式会返回#N/A,可以使用IFERROR函数屏蔽错误,例如: =IFERROR(VLOOKUP($A2, Sheet2!$A$2:$C$100, 2, FALSE), "") 这样匹配不到就显示空。 参考引用[3][^3]和引用[4][^4]中的步骤,我们提供了以上方法。 如果用户的情况不同,比如源表的匹配列不是第一列,则需要调整数据区域,确保匹配列在数据区域的第一列(可以通过调整区域范围来实现,例如源表匹配列在C列,要返回D列和E列,则数据区域设置为$C$2:$E$100,这样匹配列就是区域的第一列)。 最后,如果用户需要根据两列条件匹配,请参考我们上面提到的辅助列方法。 </think>以下是在Excel中使用VLOOKUP函数将一张表的一列数据对应到另一张表两列数据的详细方法: ### 解决方案(分步操作) 1. **准备数据** - **目标表**:需要添加数据的表格(例如:表1) - **源表**:提供数据的表格(例如:表2) - 确保两表有**共同匹配列**(如姓名、ID等),且匹配列在源表的第一列(VLOOKUP要求) 2. **匹配第一列数据** ```excel =VLOOKUP(匹配依据单元格, 源表数据区域, 返回列序号1, FALSE) ``` - **示例**:在表1的B2单元格匹配表2的电话 ```excel =VLOOKUP(A2, Sheet2!$A$2:$C$100, 2, FALSE) ``` - 说明: - `A2`:表1的匹配依据(如姓名) - `Sheet2!$A$2:$C$100`:源表区域(含匹配列和两列数据) - `2`:返回源表区域的第2列(电话) - `FALSE`:精确匹配 3. **匹配第二列数据** ```excel =VLOOKUP(匹配依据单元格, 源表数据区域, 返回列序号2, FALSE) ``` - **示例**:在表1的C2单元格匹配表2的地址 ```excel =VLOOKUP(A2, Sheet2!$A$2:$C$100, 3, FALSE) ``` - 关键修改:将第三个参数改为`3`(返回源表区域的第3列) 4. **填充公式** - 选中B2和C2单元格 → 拖动右下角填充柄向下填充 - 使用`$`锁定区域(如`$A$2:$C$100`)防止填充时区域偏移[^3][^4] ### 案例演示 假设需要将下表2的电话和地址匹配到表1: | 表1(目标表) | | | |---------------|----------|----------| | **姓名** (A列) | **电话** (B列) | **地址** (C列) | | 张三 | `=VLOOKUP(A2,Sheet2!$A$2:$C$3,2,FALSE)` | `=VLOOKUP(A2,Sheet2!$A$2:$C$3,3,FALSE)` | | 表2(源表) | | | |-------------|----------|----------| | **姓名** (A列) | **电话** (B列) | **地址** (C列) | | 张三 | 13800138000 | 北京市 | | 李四 | 13900139000 | 上海市 | ### 注意事项 1. **匹配列必须在源表第一列** 若源表匹配列不在第一列,需调整数据区域(如原区域为B:D,则改为A:D并将匹配列移至A列)[^3][^4] 2. **处理匹配错误** - 用`IFERROR`屏蔽错误值: ```excel =IFERROR(VLOOKUP(...), "未到") ``` 3. **区域引用必须用`$`锁定** 如`$A$2:$C$100`,避免填充公式时区域偏移[^4][^5] 4. **返回多列时需分开操作** VLOOKUP一次只能返回一列,每新增一列需单独设置公式并修改列序号[^3] ### 替代方案 若需同时返回两列数据,可用`XLOOKUP`(Office 365): ```excel =XLOOKUP(匹配值, 匹配列, 返回区域, "未到") ``` 直接选中返回区域(如`B2:C100`)可一次性返回多列[^1][^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值