分享

又get一个经典套路!

 互利互读一辈子 2023-07-25 发布于北京

我们来看一下,下面的典型案例

图片

遇到这种问题,我们先来说一下解决的初步思路:

首先Excel中没有直接的区域查找函数,那么我们是否可以直接用整个区域和名称比较,看是否有有一值的,如果有,我们把对应的行或右侧最接近的列返回即可拿到值!

下面我们来看一下公式:

▼数组公式-非365三键录入

=INDIRECT(TEXT(MAX(IF($A$2:$H$5=B10,ROW($A$2:$H$5)/1% CEILING(COLUMN($A$1:$H$5),4)-3)),'R0C00'),)

图片

下面我们来分析一下公式及对应的思路:

按照我们初步的思路,判断区域中的姓名,如果等于我们就返回行号和对应的班级列号,我们来看一下这里是如何处理的!

▍核心解析01 - 返回满足条件的行列号

“张飞” 查询过程如下:

1、找到“张飞”对应的单元格,返回行号非常简单,ROW就可以了,但是对应的班级列怎么处理呢?

图片

这里涉及到一个舍入到最近倍数的公式 CEILING 函数

图片

内容是4个一组,那么可以先向上舍入到4的倍数,然后因为内容都在4列中的第一列,那么-3 就是对应的位置!第一个核心问题就处理好了!

那么第二个问题,如果根据行列提取内容,肯定有很多同学想到使用INDEX,但是那样太麻烦了,我们说一种简单的套路

▍核心解析02 - 根据行列号返回内容

在一个数中如何体现两个数?并容易区分他们?答案其中很简单,我们只需要把其中一个数扩大10的N次方倍数再加上第二个数即可!

比如我们想把 21  和4 放到一起,可以这样来处理,21*10000 4=210004

我们只要MOD  10000取余数即可得到4,取整得到21,当然如果利用TEXT和单元格地址,我们还可以简化处理!

在这之前,我们要掌握INDRIECT这个函数的基础用法【INDIRECT函数基础入门详解!】,本案例中主要使用的是R1C1模式,大家可能不太熟悉。

R1C2=第1行第2列=B1

INDIRECT第二参数0即可使用R1C1模式!

比如我们案例中的301,使用TEXT格式化后就是R3C001 = A3 INDRIECT就会返回A3的值!

TEXT格式化为符合INDIRECT函数优化的“R1C1”模式!

图片

INDIRECT一下即可拿到A3的值,也就是1班,注意这里,INDIRECT第二参数0即可不写,但是逗号必须保留!

图片

什么?你说如何拿到这个301? 使用MAX即可!逻辑值FALSE将会被MAX忽略掉,所以最后就剩下301了!

如果函数较多,我们可以把行再多扩大一些,多加几个%,一个百分号,表示扩大100倍!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多