execl中引用与某一列或行中特定值在同一行或同一列的其他单元格
在execl中,我们常会遇到这样的场景
有很多列的源数据,A列中单元格值均来源于其中一列,例C列,
B列中单元格数值(B1)则等于与符合某种条件的(本例中条件为C列中该单元格数值与A1相等)C列中某个单元格同一行的D列单元格值,
例如A1=C5时,B1=D5;A1=C7时,B1=D7;A2=C5时,B2=D5;A2=C7时,B2=D7;以此类推,
该怎么办呢?百度了好久,都说用Vlookup来查,鼓捣半天没成功,最好还是自己研究搞定,其实说穿了很简单,方法如下
场景:
A1单元格,B1单元格,C1至C20单元格,D1至D20单元格
A1数据来源于C1-C20,现要求B1返回与符合某种条件(本例中条件为C列中该单元格数值与A1相等)的C列单元格同一行的D列单元格
思路:
先用match函数返回A1在C1-C20间的行号,即  match(A1,C1:C20,)
再用index函数获取指定行、列号单元格的数值,即index(D1:D20,match(A1,C1:C20),)
即最终结果是A1单元格设置数据有效性>序列>来源于C1:C20,B1单元格填入  =index(D1:D20,match(A1,C1:C20),)
同理,可求得某一行中特定值的列号,再根据列号取得对应单元格值
vlookup和columnmatch(lookup_vale,lookup_array,[match_type]),返回值为行号或者列号
参数详解: 
lookup_vale为要在lookup_array内查的值,可以是数值、文本或者逻辑值,或者对这些值得引用
lookup_array为搜索范围,即某个数组常量或者某一列、某一行,不能是某个区域
match_type为匹配方式,取值为  -1,0,1,意义未知,一般不填即可)
index(array,row_num,column_num),返回指定位置的单元格数值
array为某个区域,或者数组常量,当array为数组常量或者某一列、某一行时,只需要指定行号或者列号其中一个参数即可,只有当array为某一区域时才需要同时指定行号和列号
row_num为行号
column_num为列号
以上提及的数组常量,在函数中格式为
{数值1,数值2,数值3,数值4,……}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。