如何根据单元格是否有值,取到对应行的标题(应该是对应列标题,属于提问描述有误)?并且每行中有且只有一个非空单元格。

LOOKUP函数查找唯一值,简单又实用!

考虑到数据隐私,我自己模拟了一个简单的表格,来看如何解决这个问题。

LOOKUP函数查找唯一值,简单又实用!

▲ 教学案例模拟

如图,左侧表格记录的是A、B、C、D、E5名选手在一项比赛的用时,总共4局,只记录唯一一个成功的选手及用时,记录了4行。现在要求在I列处,将每一局成功的选手提取出来。请考虑1分钟,如果是你,你会使用什么方法?今天,徐老师跟大家分享两种方法。

方法1:数组法

对这个问题,大多数人的思考逻辑是:在每一行数据中,挨个判断每个单元格是不是非空,如果是,则将对应列标题提取出来。逻辑很简单,但是真的写起来是有难度的,需要对函数、对数组有着非常熟练的掌握。

挨个判断每个单元格——须用到数组;

是不是非空单元格——NOT(ISBLANK())

找到对应标题的单元格地址——ADDRESS(所在行,所在列)

提取对应标题——INDIRECT(ADDRESS())

所以你看,首先你得知道EXCEL里有ISBLANK、ADDRESS、INDIRECT等等这些函数,然后才有可能想起它们,将思路拆解并转化为每一步公式。否则,即使你的思路再清晰也没用!学习EXCEL,就是帮助我们把有思路真正转化为有效思考,否则就是空中楼阁。经过拆解后,下面来看我写的公式:

LOOKUP函数查找唯一值,简单又实用!

公式:{=INDIRECT(ADDRESS(2,MAX(IF(NOT(ISBLANK(C3:G3)),COLUMN(C3:G3),0)))) }

利用数组公式判断一行中每个单元格是否为非空,如果是则返回对应的列号(COLUMN函数),否则返回0。这样IF函数返回的就是一个数组,以第1局为例,返回结果为{0,4,0,0,0}。IF外面嵌套MAX函数,从数组中求出最大值,以第1局为例,即为4。再用ADDRESS(2,4)计算出对应标题的单元格地址,即$D$2单元格,最后用INDIRECT函数返回文本指向的单元格,得到$D$2对应值——B。其它几行, 同样的公式。

发表回复