我们来看一下,下面的典型案例 遇到这种问题,我们先来说一下解决的初步思路: 首先Excel中没有直接的区域查找函数,那么我们是否可以直接用整个区域和名称比较,看是否有有一值的,如果有,我们把对应的行或右侧最接近的列返回即可拿到值! 下面我们来看一下公式:
下面我们来分析一下公式及对应的思路: 按照我们初步的思路,判断区域中的姓名,如果等于我们就返回行号和对应的班级列号,我们来看一下这里是如何处理的! ▍核心解析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模式,大家可能不太熟悉。
INDIRECT第二参数0即可使用R1C1模式! 比如我们案例中的301,使用TEXT格式化后就是R3C001 = A3 INDRIECT就会返回A3的值! TEXT格式化为符合INDIRECT函数优化的“R1C1”模式! INDIRECT一下即可拿到A3的值,也就是1班,注意这里,INDIRECT第二参数0即可不写,但是逗号必须保留! 什么?你说如何拿到这个301? 使用MAX即可!逻辑值FALSE将会被MAX忽略掉,所以最后就剩下301了! 如果函数较多,我们可以把行再多扩大一些,多加几个%,一个百分号,表示扩大100倍! |
|