一个关于VLOOKUP使用公式中存在的问题,请各位大虾们看看呢,非常感谢
表1中的数据是一列员工的编号,如下图
表2中的数据是员工编号对应的名字
现在我想得到的结果是:将表1员工编号对应为员工的姓名
之前有位大虾给了一个计算公式:
VLOOKUP(--LEFT(A4,FIND("/",A4)-1),表2!A:B,2,)&"/"&VLOOKUP(-LOOKUP(,-MID(A4,FIND("/",A4)+1,ROW($1:$6))),表2!A:B,2,)&IF(LEN(A4)-LEN(SUBSTITUTE(A4,"/",))>1,"/"&VLOOKUP(-LOOKUP(,-RIGHT(A4,ROW($1:$6))),表2!A:B,2,),) 无法得到我想要的结果
但是将员工编号换一下位置,改成11192/14409/4007,就可以用上面的公式?为什么呢?如何修改上诉公式? 展开
提问中公式出错的原因在于那个分隔符 / ,这在EXCEL中是当作除号的,如果把A4的 / 换为其它符号如@,也把公式中的 / 也替换为 @ ,提问中原来的公式也可以用。
B4公式下拉:
=IF(A4="","",VLOOKUP(--LEFT(A4,FIND("/",A4)-1),表2!A:B,2,)&"/"&VLOOKUP(-LOOKUP(,-LEFT(SUBSTITUTE(MID(A4,FIND("/",A4)+1,9),"/","@"),ROW($1:$6))),表2!A:B,2,)&"/"&VLOOKUP(-LOOKUP(,-RIGHT(SUBSTITUTE(A4,"/","@"),ROW($1:$6))),表2!A:B,2,))
但是我如果将工号修改为两个,比如14409/4007/11192修改为14409/4007,用公式就会多出一个:公式最后的结果是:小朱/小徐/小徐 。这是为什么呢
提问中那样的表格设计本身就是中看不中用,那公式也只能固定是显示3个姓名,建议表格改为这样。
B4公式右拉至足够的列再下拉:
=IF($A4="","",IF(LEN($A4)-LEN(SUBSTITUTE($A4,"/",))+1>=COLUMN(A1),VLOOKUP(--MID(SUBSTITUTE($A4,"/",REPT(" ",99)),COLUMN(A1)*99-98,99),表2!$A:$B,2,),""))
如果用的是EXCEL 2007及以上版本,公式可以精简为:
=IFERROR(VLOOKUP(--MID(SUBSTITUTE($A4,"/",REPT(" ",99)),COLUMN(A1)*99-98,99),表2!$A:$B,2,),"")