excel查找 引用多列数据的问题

表1 表2
姓名 年龄 性别 身高 视力 姓名 性别 年龄 身高
A B
B D
C
D
表一是个数据库这样 我要根据表2的姓名 从表1里面查找 找到了 就把表2的性别 身高 年龄什么数据引过来
vlookup 我会用 但是每次一列列关联 麻烦 每次都要重新选区域 当量多的时候 非常不效率
有没有更简单的方法
知道的教教我 谢谢了啊

INDEX函数用于交叉引用查找数据,它返回指定的行与列交叉处的单元格数值,有引用形式和数组形式两种用法,引用形式可以有多个不连续的区域,数组形式通常返回数值或数值数组,下面来说一下它们的具体用法。

方法/步骤

如上图,应用index函数查找某一货物所在的库位及数量。在index引用形式下,其语法格式为:INDEX(reference,row_num,column_num,area_num)  reference 是对一个或多个单元格区域的引用,如本例,只引用了一个单元格区域A2:D9,也就是要查找的区域范围,Row_num   所在区域的行号,Column_num 所在区域的列号,如本例中两个公式所示。

如上图,在这个例子中,公式用到了INDEX函数的第4个参数:area_num, 它指的是:选择引用中第几个区域,如本例中,A15=INDEX((A2:D9,C2:D9),4,2,2),引用中有两个区域,分别是:A2:D9和C2:D9,area_num 设置的是2,即引用第二个区域:C2:D9,它表明要返第2个区域中 row_num 和 column_num 的交叉处的数值。选中或输入的第一个区域序号为 1,第二个为 2,以此类推。如果省略 area_num,则函数 INDEX 使用区域 1。

注意:多个 区域应用()括起来。


其实要实现这一功能,可以用VLOOKUP 函数代替。

下面来说一下INDEX函数的数组形式。


语法格式:INDEX(array,row_num,column_num)

Array   为单元格区域或数组常量。

如果数组只包含一行或一列,则相对应的参数 row_num 或 column_num 为可选参数。

如果数组有多行和多列,但只使用 row_num 或 column_num,函数 INDEX 返回数组中的整行或整列,且返回值也为数组。

Row_num   数组中某行的行号,函数从该行返回数值。如果省略 row_num,则必须有 column_num。

Column_num   数组中某列的列标,函数从该列返回数值。如果省略 column_num,则必须有 row_num。

如上图:用到的即是INDEX的数组形式,查询库区A内货物的明细信息。

公式解析:B15=INDEX(B2:E9,IF(E2:E9=B11,ROW(E2:E9)-1,65535),1)

首先这是一个数组公式,写完函数应用shift +ctrl +enter 三键输入!

IF(E2:E9=B11,ROW(E2:E9)-1,65535),指如果库位与B11中一致,则显示为该行所在行号并减1,因为表格有表头占用了第一行,因此就要减去1,如果库位不同就显示 65535。

因此IF 函数返回的结果是{1,2,3,4,65535,65535,65535,65535}

INDEX(B2:E9,IF(E2:E9=B11,ROW(E2:E9)-1,65535),1)  把区域B2:E9,中第1,2,3,4行第1列的数值显示出来,就得到了结果

由于65535中无数值因此后面的都显示错误。

其它2个公式类同。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-28
仍然用VLOOKUP这个函数,只不过要整个列区域引用,并加以固定,
参见公式(Sheet1!$A:$E)式中采用从A列到E列区域一次性全选,并加以固定
这样所变化的只有另外2个参数,用来做索引的列$A2,将列标固定,以备填充时不会改变,这样这一列不用变了,
唯有数据引入的列需要改动而已,
=VLOOKUP($A2,Sheet1!$A:$E,3,FALSE)追问

怎么固定索引列

追答

就如我前面的列在A2前面加,变成$A2即可

本回答被提问者采纳
第2个回答  2011-10-28
那你用index+match吧
假设表1表2分别是sheet1 sheet2
五列分别是ABCDE
那sheet2表B2输入
=index(sheet1!$B$2:$E$5,match($a2,sheet1!$A$2:$A$5,),match(B$1,sheet1!$B$1:$E$1,))
把这个公式填充区域B2:D3
即可。追问

每一块能详细解释下吗 看不懂

追答

第一段就是你所有的区域,第一个match是做了行偏移,第二个match做了列偏移,即取的是交叉点的值。
index和match是基本函数,如果这二个函数不太明白,你可以在帮助里查看。
index(A1:D10,2,3)意思是A1:D10这个区域中,第二行和第三列的交叉
match(a1,E1:E100,)意思是取出E1:E100中是A1值的单元格所在行。
结合我举的二个例子,再配合帮助,我想你应该有所了解了

追问

公式是明白了 但是可能没有准确的表格 所以你给的公式里面的编码 看不懂
还有那个sheet1!$A$2:$A$5,) 这个5逗号 后面没东西吗

相似回答