如果同一行没有重复数据,公式相对简单些,但如果考虑可能会有重复数据时,公式就要复杂多了,下面的公式考虑有重复数据(没有重复数据当然也能得到正确结果),截图中也的确有重复数据,并按顺序准确取出。
K2=INDEX(OFFSET($B1:$G1,MATCH($J2,$A2:$A6,),),MATCH(LARGE(OFFSET($B1:$G1,MATCH($J2,$A2:$A6,),)*100-COLUMN($B:$G),COLUMN(A:A)),OFFSET($B1:$G1,MATCH($J2,$A2:$A6,),)*100-COLUMN($B:$G),))
同时按Ctrl+Shift+Enter三键 输入数组公式,右拉到M2
K1=INDEX($B1:$G1,MATCH(LARGE(OFFSET($B1:$G1,MATCH($J2,$A2:$A6,),)*100-COLUMN($B:$G),COLUMN(A:A)),OFFSET($B1:$G1,MATCH($J2,$A2:$A6,),)*100-COLUMN($B:$G),))
同样数组公式,右拉到M1
在k2单元格(白色)那里输入公式=vlookup(j2,a:g,7,false).L2单元格输入公式=vlookup(j2,a:g,6,false).M2单元格输入公式=vlookup(j2,a:g,3,false)齐活
用VBA可以一劳永逸
用VLOOKUP函数。
VLOOKUP函数说明如下:
在表格或数值数组的首列查找指定的数值,并由此返回表格或数组中该数值所在行中指定列处的数值。
这里所说的“数组”,可以理解为表格中的一个区域。数组的列序号:数组的“首列”,就是这个区域的第一纵列,此列右边依次为第2列、3列……。假定某数组区域为B2:E10,那么,B2:B10为第1列、C2:C10为第2列……。
语法:
VLOOKUP(查找值,区域,列序号,逻辑值)
“查找值”:为需要在数组第一列中查找的数值,它可以是数值、引用或文字符串。
“区域”:数组所在的区域,如“B2:E10”,也可以使用对区域或区域名称的引用,例如数据库或数据清单。
“列序号”:即希望区域(数组)中待返回的匹配值的列序号,为1时,返回第一列中的数值,为2时,返回第二列中的数值,以此类推;若列序号小于1,函数VLOOKUP 返回错误值 #VALUE!;如果大于区域的列数,函数VLOOKUP返回错误值 #REF!。
“逻辑值”:为TRUE或FALSE。它指明函数 VLOOKUP 返回时是精确匹配还是近似匹配。如果为 TRUE 或省略,则返回近似匹配值,也就是说,如果找不到精确匹配值,则返回小于“查找值”的最大数值;如果“逻辑值”为FALSE,函数 VLOOKUP 将返回精确匹配值。如果找不到,则返回错误值 #N/A。如果“查找值”为文本时,“逻辑值”一般应为 FALSE 。另外:
·如果“查找值”小于“区域”第一列中的最小数值,函数 VLOOKUP 返回错误值 #N/A。
·如果函数 VLOOKUP 找不到“查找值” 且“逻辑值”为 FALSE,函数 VLOOKUP 返回错误值 #N/A。