VLOOKUP巧排座次表

原创作者 | 李锐

微信公众号 | Excel函数与公式(ID:ExcelLiRui)

个人微信号 | (ID:ExcelLiRui520)

VLOOKUP巧排座次表

工作中的很多问题咋一看挺复杂,但只要你能找到合适的方法,处理起来就会轻松很多,所以在开头提醒大家一点很重要的思路,但凡有规律可循的问题,都可以批量处理,如果你不会,只需找到那个方法把它学会。

再来说今天要讲的,VLOOKUP除了查找数据还可以实现整理和排列数据的需求,这也是为了帮大家拓宽视野,多了解一些VLOOKUP函数的灵活应用方法,同时激发同学们更丰富的案例处理思路。

今天要讲的就是VLOOKUP巧排座次表的技术,看完觉得好的,记得去底部点个好看再分享给朋友,我会根据大家的反馈调整发文内容及写法。

问题描述

下图左侧A列放置的是原始数据源,包含等待排列座次的姓名。

要求在右侧的黄色区域输入公式,按照C2单元格要求排成的列数,对A列姓名整理排列座次表。

比如C2单元格要求排成两列,效果如下图所示,如果要求排成更多列,公式结果也可以自动更新,这应该怎么做呢?

为了让大家清晰案例效果,可以先看下面的效果演示,自己思考一下。

效果演示

下图是我做好公式以后的效果演示,便于你理解案例要求和捋顺思路。

右侧黄色公式区域,根据要求排列的列数,自动把A列姓名排列成座次表。

下图是写好公式以后的演示效果

(下图为gif动图演示)

从上面的动图演示可见,无论要求排成几列,公式都可以很智能的把你想要的结果排列出来。

在看下面的解决方案之前,请你先独立思考,带着思路和问题继续向下看。

解决方案

思路提示:解决这个问题的关键点,是构建VLOOKUP函数查找到目标数据后返回哪列信息,即VLOOKUP函数的第三参数。

这里我们依然使用多函数组合来进行技术实现,只不过需求不同,组合方法随之变更即可。

选中C7:H18单元格区域,输入如下数组公式,按ctrl+shift+enter批量填充整个区域数组公式:

=VLOOKUP("*",TRANSPOSE(A2:A99),((ROW(INDIRECT("1:"&INT((COUNTA(A:A)-1)/C2)+1))-1)*C2+TRANSPOSE(ROW(INDIRECT("1:"&C2)))),0)&""

如下图所示。

(下图为公式示意图)

一句话解析:

此公式共3个关键点,第一参数使用通配符借助VLOOKUP函数模糊查询;第二参数借助TRANSPOSE函数将纵向排列的原始数据转为横向排列;第三参数借助函数组合构建适合的内存数组按需求的排列返回目标结果,这里所说的适合指的是内存数组的行列数和要求的几排几列相符合,这个要求还要随着C2下拉菜单的条件变动随时更新,这也是普通人最难做到的一点。

此案例依然是一个使用多函数组合嵌套创造条件构建所需的内存数组解决问题的经典案例,你会发现处理复杂问题都需要用到这点,万变不离其宗。

这类关键技术的精髓之处很难用一句话大而全的概括,因为其中的变化数不胜数,唯一不变的是捋顺需求思路后,动用你扎实的函数功底选取适合的方法将这个思路落地实现。这些相关的思路、技术以及原理解析,在下面介绍的3门成体系的函数课程里面已经系统完整涵盖。

(0)

相关推荐