进阶 | INDIRECT函数进阶教程 - 原理篇!
INDIRECT函数也是常用的引用函数之一,我把他叫做“快递员函数”!因为只要我们告诉他地址,他就可以准确的那种地址中的东西!
INDIRECT函数基础还没掌握的同学,可以先读一下基础篇,不然学习本篇有点压力!点击跳转阅读---> INDIRECT函数基础入门
进阶部分主要讲,ROW等函数引发的三维问题以及降维处理!虽然有点难,但是我还是尽量通过图例和动画的方式讲解,希望大家都能“悟”到!
进阶01 | ROW和COLUMN引发的三维思考及讲解
我们手工输入地址,输入到单元格中直接返回结果,完全OK!
函数公式▼
=INDIRECT('A1:A2')
但是当我们输入
函数公式▼
=INDIRECT('A'&ROW(A1:A2))
结果却返回#VALUE错误值,你想过为什么吗?
两个结果有什么区别?我们可以通过图示的方式让大家直观的感受一下!
从图中我们可以看出结果是两个三维的,他无法存放到二维的单元格中!
那为什么会产生这种情况呢?其实这是ROW方式导致的,我们大部分人只知道ROW返回对应的行号,不知道他的结果是一个数组,设置只有一个单元格的情况!
来看一个动画!从动画中,你会发现ROW(A1)的结果并不是你想象中的1
而是{1},他们一个是常量,一个是单元数数组!
那么 =INDIRECT('A'&ROW(A1:A2)) 的结果 其实不是你F9看到的 {1;4}
而是 {{1},{4}},只是这种是单元格F9自动做了简化呈现!但元素不是单个时可以充分说明这点!
进阶02 | 多元素多区域及降维
如果我们相对9宫格的,每行累计求和(1行,1-2行,1-3行),使用INDIRECT该怎么写呢?
函数公式▼
=INDIRECT('A1:C'&ROW(1:3))
上面INDIRECT部分的写法没有问题,下面我们通过图示的方法看看INDIRECT错误的结果背后的数据结果到底是什么样子的!
手残党大概看看,主要意思是他们每一个区域的结果都是一个平面,他们是在空间上独立的。所以无法在二维层面呈现结果!
上面很重要,要考!!
那么我们怎么让一个平面输入到一个单元格中的呢?
一个我们可以取每个平面的其中一个输入,或者我们把整个平面聚合处理(比如本题的求和)!因为平面独立,所以可以直接使用SUM求和(每个平面会分别求和,互不影响)!
选中三个单元格,然后按下Ctrl+Shift+Enter!
函数公式▼
=SUM(INDIRECT('A1:C'&ROW(1:3)))
上面的图示我们讲过了,那么如果通过数据该如何呈现,那么应该是这样
{{1,2,3};{1,2,3;4,5,6};{1,2,3;4,5,6;7,8,9}} 三个元素,那么元素又是一个数组!
可以是二维的或者单元素数组!
其实除了使用SUM,SUMIF(S)和SUBTOTAL也可以实现聚合,以欧版SUMIF使用较多!
O365版本下可以自动扩展!其他版本“ESC三键”录入!
函数公式▼
=SUMIF(INDIRECT('A1:C'&ROW(1:3)),'<>')
如果我们想求平均值等,可以使用SUBTOTAL配合,聚合方式多!
函数公式▼
=SUBTOTAL(1,INDIRECT('A1:C'&ROW(1:3)))
进阶基础原理我们就先到这里,后续我们再通过一些实际案例进行巩固!如果你有一点的数组基础,你应该有所“悟”吧!