EXCEL的跨表查询,MATCH函数

=OFFSET(INDIRECT(查询!$A$2&"!$A$1"),ROW()+1,MATCH(查询!$B$2,INDIRECT(查询!$A$2&"!$A$4:$L$4"),0)-1)
请问整个公式=OFFSET(INDIRECT(查询!$A$2&"!$A$1"),ROW()+1,MATCH(查询!$B$2,INDIRECT(查询!$A$2&"!$A$4:$L$4"),0)-1) 怎么理解呢?

查询表 A2对应的内容为可选项“出库”或者“入库”,如果在这里选择“出库”,那么出库表对应的$A$4:$L$4则是:
序号 日期 出库单号 物料编码 品名 规格型号 出库数量 单位 领料部门 生产单号 单价 金额小计

出库表对应的A1单元格写着“出 库 明 细 表”

查询表的B2的值为“领料部门”

上面表可更改为:
=OFFSET(INDIRECT(出 库 明 细 表,ROW()+1,MATCH(领料部门,INDIRECT(出库!$A$4:$L$4"),0)-1)
而 出库!$A$4:$L$4"对应的数据为“序号 日期 出库单号 物料编码 品名 规格型号 出库数量 单位 领料部门 生产单号 单价 金额小计”
那么INDIRECT(出库!$A$4:$L$4")的结果是?

是指《查询》这个表格中a2单元格中的表名字数据所指的A$4:$L$4

比如《查询》这个表格中a2单元格中 输入
sheet1
那么INDIRECT(查询!$A$2&"!$A$4:$L$4")
代表的是

sheet1表中的A$4:$L$4

整个公式意思是
=OFFSET(INDIRECT(查询!$A$2&"!$A$1"),ROW()+1,MATCH(查询!$B$2,INDIRECT(查询!$A$2&"!$A$4:$L$4"),0)-1)
返回 以查询!$A$2&"!$A$1"所确定的位置为起点,返回向下移动公式所在单元格行号加1个行,
在查询!$A$2&"!$A$4:$L$4"所确定的范围内与查询!$B$2相符的序号减去1 个列

所确定的单元格中的数据

具体你的数据你自己对应我的解释吧,比你给的数据太多,自己研究下

哥们,你自己看我的解释啊,把单元格换成你的对应的文字就好了,没必要我在把你的数据一一对应吧,我解释的很详细了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-06-09
INDIRECT()返回由文本字符串指定的引用。此函数立即对引用进行计算,并显示其内容。
OFFSET()这个函数的意思,
OFFSET(reference,rows,cols,height,width)
Reference 作为偏移量参照系的引用区域。Reference 必须为对单元格或相连单元格区域的引用;否则,函数 OFFSET 返回错误值 #VALUE!。
Rows 相对于偏移量参照系的左上角单元格,上(下)偏移的行数。如果使用 5 作为参数 Rows,则说明目标引用区域的左上角单元格比 reference 低 5 行。行数可为正数(代表在起始引用的下方)或负数(代表在起始引用的上方)。
Cols 相对于偏移量参照系的左上角单元格,左(右)偏移的列数。如果使用 5 作为参数 Cols,则说明目标引用区域的左上角的单元格比 reference 靠右 5 列。列数可为正数(代表在起始引用的右边)或负数(代表在起始引用的左边)。
Height 高度,即所要返回的引用区域的行数。Height 必须为正数。
Width 宽度,即所要返回的引用区域的列数。Width 必须为正数。
INDIRECT(查询!$A$2&"!$A$1")是OFFSET的第一个参数,在这里它表示一个表的A1单元格,而这个表的名称是由查询表的由A2单元格控制.比方说查询表的A2单元格是"价格",那么它就引用价格表的A1单元格.
ROW()+1是第二个参数,是返回第一参数的向下偏移量,而这个向下偏移量是由公式所在的行控制的,比如公式在第三行,那么ROW()+1就返回4
MATCH(查询!$B$2,INDIRECT(查询!$A$2&"!$A$4:$L$4"),0)-1是第三个参数,返回第一个参数的向右偏移量,这个向右偏移量是查询表B2单元格的数据,在以查询表A2单元格的数据为工作表名称的A4:L4区域中的位置-1而得,比如查询表b2为"张三",A2为"价格",那么就在价格表的A4:L4中查找"张三"的位置,比如是3,那么这个参数就为3-1=2
第4,5个参数没有写,就说明OFFSET返回的区域与第一个参数的高度和宽度一样.
下面那个公式有些错误,=OFFSET(INDIRECT(出 库 明 细 表,ROW()+1,MATCH(领料部门,INDIRECT(出库!$A$4:$L$4"),0)-1) 只有一个单引号,第一INDIRECT那里掉了) ,INDIRECT(出库!$A$4:$L$4"),这样引用的作用就是(这里掉了一个"):不管你怎样删除行或列,它的引用区域(出库!$A$4:$L$4)始终不变,如果不需要进行删除$A$4:$L$4上面的行或左边的列的操作,,可不用INDIRECT直接写成 出库!$A$4:$L$4就行了 ,公式中的"出 库 明 细 表"和"领料部门"就定义的名称,可在插入,名称,定义中看到.
第2个回答  2009-06-09
INDIRECT(查询!$A$2&"!$A$4:$L$4")中!$A$4:$L$4是指查询表格,目前表格不在查询表格。也就是OFFSET()函数不在查询表格,它是在其它表格中引用查询表格的数据。
第3个回答  2009-06-10
OFFSET(reference,rows,cols,height,width)
第4个回答  2015-12-22
定义编辑
MATCH函数含义:返回指定数值在指定数组区域中的位置
语法:MATCH(lookup_value, lookup_array, match_type)
lookup_value:需要在数据表(lookup_array)中查找的值。可以为数值(数字、文本或逻辑值)或对数字、文本或逻辑值的单元格引用。可以包含通配符、星号 (*) 和问号 (?)。星号可以匹配任何字符序列;问号可以匹配单个字符。
lookup_array:可能包含有所要查找数值的连续的单元格区域,区域必须是某一行或某一列,即必须为一维数据,引用的查找区域是一维数组。
match_type:表示查询的指定方式,用数字-1、0或者1表示。
为1时,查找小于或等于lookup_value的最大数值在lookup_array中的位置,lookup_array必须按升序排列:
为0时,查找等于lookup_value的第一个数值,lookup_array按任意顺序排列:
为-1时,查找大于或等于lookup_value的最小数值在lookup_array中的位置,lookup_array必须按降序排列。利用MATCH函数查找功能时,当查找条件存在时,MATCH函数结果为具体位置(数值),否则显示#N/A错误。
注:当所查找对象在指定区域未发现匹配对象时将报错!
建议使用match方法同时使用 On Error Resume Next;或者 On Error goto 100 语句。

举例编辑
选择B7单元格,输入“=MATCH(100,B2:B5,0)”,按回车,显示“3”。
公式解析:在“B2:B5”区域内查找第一个等于“100”的数值为第几个,按顺序找到B4单元格的数值为“100”,B4在“B2:B5”区域内排第3,所以显示“3”。
相似回答