多维引用,你进阶高手的必经之路。
在excel中引用一行或一列的数据,叫一维引用,可以看作线;引用多行多列的数据叫二维引用,可以看作面;而三维引用可以看作体,它引用多个面的数据。
什么是多维引用呢?我的理解是在一个数组中,每一个元素经过计算又形成一个数组,这样的话,数组中包含数组,就形成多维引用。
能形成多维引用的函数有indirect和offset,在indirect函数中,只要第一参数是数组的话,就会形成多维引用,哪怕这个数组中只有一个元素。indirect({"A1","B1","C1"})这样就形成了多维引用,indirect({"A1"})这样也是多维应用,直接用sum只能求出多维引用的第一个区域的值。
而offset这个函数,在第2,3,4,5这四个参数中,只要有一个参数是数组,就会形成多维引用,哪怕这个数组中只有一个元素。
当形成了多维引用之后,要计算它的值,很多函数都不支持或者计算的结果不是我们想要的。支持多维引用降维计算的函数有sumif,countif,subtotal,averageif,n,t。n和t函数降维只算多维引用中每一个区域的第一个值。
1.求出A1:C1的平均值。
在D1单元格中输入公式=AVERAGE(A1:C1)。我想这个你肯定能看懂。

用indirect算一下,公式为F1=AVERAGE(INDIRECT("a1:c1")),这样的话还没有形成多维引用,因为indirect的第一参数不是一个数组。

下面用多维引用算一下,公式为F2=AVERAGE(INDIRECT({"A1","B1","C1"})),结果为3,出错了。这是为什么呢?因为average只对多维引用的第一个区域求平均值。第一区域为A1,所以对A1求平均值还是3。

那么怎么样把A1:C1三个的平均值一起算出来呢?就要用到多维引用降维的计算函数。公式为F2=AVERAGE(SUBTOTAL(1,INDIRECT({"A1","B1","C1"})))。subtotal中1代表求平均值,它的意思是对多维引用中的每一区域分别求平均值,因为每一个区域只有一个值,所以还是它本身,这样就形成了降维的作用,然后就可以用average求3个的平均值了。

你可能会问,多维引用这么复杂有什么用?用很简单的一个函数就解决了,为什么非要用这个?那么下面再举一个例子说明它的作用,当然它的作用还不只这些。
2.求出每行的和,再从这些和中取出最大值。
通常的做法就是添加辅助列用sum求和,然后再用max取大值,像我下面添加颜色的那样。

但如果我要求你不用辅助列,用一条公式完成,你会吗?这时多维引用就配上用场了。公式为F6=MAX(SUBTOTAL(9,INDIRECT("a"&{6,7,8}&":c"&{6,7,8})))。

解释一下这个公式,"a"&{6,7,8}&":c"&{6,7,8}这个形成一个数组{"a6:c6","a7:c7","a8:c8"},代表每一行的文本型地址。然后用indirect就变成直接引用每一行的数据,就形成多维引用,多维引用的第一个区域是第一行,第二个区域是第二行,第三个区域是第三行。再用subtotal分别对多维引用的每一个区域求和,这样就降维了,把每一行的和求出了,最后用max取最大值。
多维引用确实比较复杂,当然它也很重要,而且还有其他的作用,你学会了吗?