优秀的编程知识分享平台

网站首页 > 技术文章 正文

Excel高版本中二维数据查询方案:CHOOSEROWS/CHOOSECOLS

nanyue 2024-08-13 07:56:45 技术文章 11 ℃

二维数据的查询在Excel中是十分常见的场景,如下图所示,要从左边的数据中找到指定姓名的各项信息。

本文介绍Excel365版本下该类问题的解决方案。


非365版本VLOOKUP+MATCH

在过去几十年中这对组合是解决二维数据查询的中坚力量:

=VLOOKUP($G3,$B:$E,MATCH(H$2,$B$1:$E$1,0),0)

MATCH返回各个查找项目在原始数据区域中的列数作为VLOOKUP动态参数,是该方案的核心所在。

这对超级CP解决了着实帮助很多用户解决了问题,但也继承了VLOOKUP只能从左往右查找的的局限性,所以示例中无法查找“部门”数据。


非365版本INDEX+MATCH

INDEX完美解决VLOOKUP的局限,但这一方法略有难度,特别是繁琐的相对引用设置对入门级用户极不友好:

=INDEX($A:$E,MATCH($G3,$B:$B,0),MATCH(H$2,$1:$1,0))

核心逻辑是用两个MATCH分别作为INDEX的动态参数,动态获取要查找数据的行列位置。


365版本CHOOSECOLS/ CHOOSEROWS+MATCH

Excel365版本中可以用新函数解决:

=CHOOSEROWS(CHOOSECOLS(A:E,MATCH(I2:L2,1:1,0)),MATCH(H3:H6,B:B,0))

公式很长其实是因为CHOOSEROWS和CHOOSECOLS很长,其逻辑相比前两种方法都更简单。

MATCH在第一行中查找各查找项的列位置作为CHOOSECOLS的第二参数,使得CHOOSECOLS可以从A:E中提取到对应的列。

在上一步的基础上提取查找姓名对应的行数据,要点仍然是用MATCH在B列查找这些姓名对应的行位置,作为CHOOSEROWS的第二参数。

该方案另一个显而易见的好处,无需向下向右填充公式,无需繁琐的相对引用绝对引用锁定步骤。


365版本改进CHOOSECOLS/ CHOOSEROWS+MATCH+TOROW/TOCOL

改进版公式:

=CHOOSEROWS(CHOOSECOLS(A:G,MATCH(TOROW(I2:Z2,3),1:1,0)),MATCH(TOCOL(H3:H100,3),B:B,0))

改进的目的是支持数据的扩展。

如图所示,在F列和12行新增数据,同时在查询条件中也相应新增数据,无需改动公式就能实现自动更新。这一招应对动态数据十分有效,很多场合的数据会随时增减。

(题外话:超级表也能实现同样的功能)

核心要领是搭配TOROW和TOCOL,启用其第二参数忽略空值,以此达到扩展范围的目的。

再强调一遍,公式很长只是因为函数名字很长,其实逻辑很简单,拆开来看各个函数的用法也很简单。总之365版本中的方案学习成本低,效率高。

Tags:

最近发表
标签列表