分享

VLOOKUP函数的高级用法,99%的人都不知道!

 Excel不加班 2022-05-24 发布于广东

VIP学员的问题,要将左边的信息转换成右边的形式。第一行显示座位号为1-4,第二行显示座位号5-8,依次类推。

卢子看完的第一想法就是借助Word的分栏功能。

将内容复制到Word,点布局,分栏,这样基本实现。

分栏得到的结果是第一列显示座位号为1-4,第二列显示座位号5-8,也就是原来的行变成列,就这点区别。

学员的领导一定要原来的效果,只能退而求其次,用公式转换。

这种变形一般用OFFSET+ROW+COLUMN等等组合完成,写了一半,卢子换成了VLOOKUP,感觉更顺手。

每4个座位号为一行,因此就要构造一个重复4次的序列。

=ROUNDUP(ROW(A1)/4,0)


还要构成一个循环生成1-4的序列。

行的用ROW。

=MOD(ROW(A4),4)+1


列的用COLUMN。

=MOD(COLUMN(D1),4)+1


构造序列完成,就进入主题了。

将两个序列合并在一起,方便查找引用。

=ROUNDUP(ROW(A1)/4,0)&"|"&MOD(ROW(A4),4)+1


剩下的直接用VLOOKUP全部查找出来。

=IFERROR(VLOOKUP(ROW(A1)&"|"&ROUNDUP(COLUMN(A1)/4,0),$A:$E,MOD(COLUMN(D1),4)+2,0),"")


虽然构造序列说了,但一下子要理解这个公式还是很难,我分成几段进行说明。

比如要根据序号,依次查找每一列的对应值。COLUMN(B1)右拉就得到2、3、4、5。

=VLOOKUP($G2,$A:$E,COLUMN(B1),0)


G列的辅助列,可以直接用ROW代替。

=VLOOKUP(ROW(A1),$A:$E,COLUMN(B1),0)


现在要循环生成2、3、4、5,就得再嵌套MOD。

=VLOOKUP(ROW(A1),$A:$E,MOD(COLUMN(D1),4)+2,0)


1-4列是查找座位为1,5-8列是查找座位为2。因此用下面的公式生成。

=ROUNDUP(COLUMN(A1)/4,0)

再将构造序列的公式合并起来。

=VLOOKUP(ROW(A1)&"|"&ROUNDUP(COLUMN(A1)/4,0),$A:$E,MOD(COLUMN(D1),4)+2,0)


为了防止出现错误值,嵌套IFERROR让错误值显示空白。

=IFERROR(VLOOKUP(ROW(A1)&"|"&ROUNDUP(COLUMN(A1)/4,0),$A:$E,MOD(COLUMN(D1),4)+2,0),"")

这里最难的是构造各种序列,数学知识刚好派上用场。如果不理解就多看几遍,多动手练习几遍。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多