Excel 2016︱多维引用的工作原理

认识引用的维度和维数

引用的维度是指引用中单元格区域的排列方向。维数是引用中不同维度的个数。单个单元格引用可视作一个无方向的点,没有维度和维数;一行或一列的连续单元格区域引用可视作一条直线,拥有一个维度,称为一维横向引用或一维纵向引用;多行多列的连续单元格区域引用可视作一个平面,拥有纵横两个维度,称为二维引用,如图 22-1 所示。

将多个单元格或多个单元格区域分别放在不同的二维平面上,就构成多维引用。若各平面在单一方向上扩展(横向或纵向),呈线状排列,就是三维引用。若各平面同时在纵横两个方向上扩展,呈面状排列,则是四维引用,如图 22-2 和图 22-3 所示。

三维、四维引用可看作是以单元格“引用”或单元格区域“引用”为元素的一维、二维“数组”。各“引用”作为数组的元素,是以一个整体参与运算的。

引用函数生成的多维引用OFFSET 和 INDIRECT 这两个函数通常用来生成多维引用。当它们对单元格或单元格区域进行引用时,在其部分或全部参数中使用数组(常量数组、内存数组或命名数组),所返回的引用即为多维引用。I 使用一维数组生成三维引用以图 22-1 中左侧的数据表为引用数据源,以下数组公式可以返回纵向三维引用。

结果如22-2左图所示。公式表示在数据源表格中以D1单元格为基点,单元格区域的高度分别为2、3、4 行的三个单元格区域引用。由于其中的 {2;3;4} 为一维纵向数组,因此最终取得对 D1:D2、D1:D3、D1:D4 呈纵向排列的单元格区域引用。该纵向三维引用是由 OFFSET 函数在 height 参数中使用一维纵向数组产生的。同理,在 OFFSET函数的 rows、cols、width 参数中使用一维纵向数组,也将返回纵向三维引用。仍以图 22-1 中左侧的数据表为引用数据源,以下数组公式可以返回横向三维引用。

结果如图22-4所示。公式表示在数据源表格中以A1单元格为基点,分别偏移 0、1、2 列,同时单元格区域高度分别为 2、3、4 行的单元格区域引用。由于其中 {0,1,2} 和 {2,3,4} 是对应的一维横向数组,因此最终取得对 A1:A2、B1:B3、C1:C4 呈横向排列的单元格区域引用。在 OFFSET 函数的 rows、cols、height、width 参数中,一个或多个参数同时使用等尺寸的一维横向数组,将返回横向三维引用。

II 使用不同维度的一维数组生成四维引用在 OFFSET 函数的 rows、cols、height、width 参数中,两个或多个参数分别使用一维横向数组和一维纵向数组,将返回四维引用。以下数组公式将返回四维引用。

公式表示在数据源表格中以 A2 单元格为基点,分别偏移 0 行 2 列、0 行 3 列、1 行 2 列、1 行 3 列、2 行 2 列、2 行 3 列的单元格引用。由于 {0;1;2} 是一维纵向数组,{2,3} 是一维横向数组,因此最终取得对“{C2,D2;C3,D3;C4,D4}”共 6 个单元格的引用,并呈 3 行 2 列二维排列。

III 使用二维数组生成四维引用在 OFFSET 函数的 rows、cols、height、width 参数和 INDIRECT 函数的 ref_text 参数中,如果任意一个参数使用二维数组,都将返回四维引用。以下数组公式也将返回四维引用。

公式表示在数据源表格中以 B1 单元格为基点,按照 B1:C1 单元格区域的尺寸大小,分别偏移“{1行 ,2 行 ,3 行 ;4 行 ,5 行 ,6 行 }”的单元格区域引用。由于其中 {1,2,3;4,5,6} 是二维数组,因此最终取得“{B2:C2,B3:C3,B4:C4;B5:C5,B6:C6,B7:C7}”共 6 个单元格区域的引用,并呈 2 行 3 列二维排列。

IV 跨多表区域的多维引用

示例 跨多表汇总工资

图 22-5 展示了某公司 8~10 月份的部分员工工资明细表,需要在“工资汇总”工作表中汇总各位员工的工资。

在“工资汇总”工作表的 D2 单元格输入以下数组公式,按 <Ctrl+Shift+Enter> 组合键,并将公式复制到 D2:D9 单元格区域。{=SUM(SUMIF(INDIRECT({8,9,10}&'月 !A:A'),A2,INDIRECT({8,9,10}&' 月 !D:D')))}该公式首先利用 INDIRECT 函数返回对 8 月、9 月、10 月工作表的 A 列和 D 列的三维引用,然后利用支持多维引用的 SUMIF 函数分别统计各工作表中对应员工号的工资,最终利用 SUM 函数汇总三个工作表中对应员工的工资,结果如图 22-6 所示。

函数生成的多维引用和“跨多表区域引用”的区别

除了 OFFSET 函数和 INDIRECT 函数产生的多维引用以外,还有一种“跨多表区域引用”。例如,公式“=SUM(1 学期 :4 学期 !A1:A6)”可以对 1 学期、2 学期、3 学期和 4 学期这 4 张工作表的 A1:A6单元格区域进行求和,返回一个结果。

实际上,“跨多表区域引用”并非真正的引用,而是一个连续多表区域的引用组合。函数生成的多维引用与“跨多表区域引用”的主要区别如下。

函数生成的多维引用将不同工作表上的各单元格区域引用作为多个结果返回给 Excel,而“跨多表区域引用”作为一个结果返回给 Excel。

两者支持的参数类型不相同。函数生成的多维引用可以在 reference、range 和 ref 类型的参数中使用,而“跨多表区域引用”由于不是真正的引用,故一般不能在这三类参数中使用。函数生成的多维引用将对每个单元格区域引用分别计算,同时返回多个结果值。“跨多表区域引用”将作为一个整体返回一个结果值。

函数生成的多维引用中每个被引用区域的大小和行列位置可以不同,工作表顺序可以是任意的。“跨多表区域引用”的各工作表必须相邻,且被引用区域的大小和行列位置也必须相同。

(0)

相关推荐

  • 数组公式很难吗?那是你不知道数组的运算规则

    你好,我是刘卓.欢迎来到我的公号,excel函数解析.有些小伙伴经过一段时间的学习,对于常用函数的用法可能都掌握了,但是涉及到数组用法的时候,仍然一头雾水,那可能是你不知道数组的运算规则. 今天就来和 ...

  • 数据库函数多条件求和、计数及多维引用的用法

    你好,我是刘卓.欢迎来到我的公号,excel函数解析.前天分享了数据库函数dsum和dcount的基础用法.今天来分享下它们的多条件求和.计数以及多维引用的用法. -01- 多条件求和计数 1.多条件 ...

  • 免辅助列的利器:mmult和多维引用

    你好,我是刘卓.欢迎来到我的公号,excel函数解析.今天通过几个简单的题目来分享一下免辅助列的方法.虽然题目很简单,你也一定会做,但是如果增加要求的话,简单的题目也会变得不简单,也会有你未曾触碰的存 ...

  • N函数的【5种应用汇总】

    点击上方"EXCEL应用之家"蓝字关注微信公众号 点击文章底部"阅读原文"可领取阅读红包:模板文档可免费获取 送人玫瑰,手有余香,请将文章分享给更多朋友 动手操 ...

  • 转置函数transpose的用法

    今天来说说transpose这个函数,它的作用是转置单元格区域,也就是行列互转. -01- 函数说明 1.函数语法结构 transpose函数可以对工作表的单元格区域或数组进行转置,实现行列互转.比如 ...

  • 方法总比困难多:10种方法解多列条件求和问题!

    下图左表是数据源,记录的是各手机品牌在周一.周二.周三的销售数据.求各品牌在这三天的销售总和,结果如右表所示. 对于这个问题,小伙伴们会怎么解决呢?条件区域只有1列,求和的数据却有3列.嗯~嗯?让我想 ...

  • 学好这些知识,可以解决excel函数中99%的问题!

    学好这些知识,可以解决excel函数中99%的问题!

  • 从基础到进阶,层层递进!

    你好,我是刘卓.欢迎来到我的公号,excel函数解析.今天来分享群友提供的一个案例,我将从基础到进阶的方法来展示下解题的过程,希望对你有所帮助. 先来看案例,如下图所示,A2:I11是数据源,记录的是 ...

  • 强大的查找定位函数match的用法

    今天说一个查找定位函数match的用法,它是按特定的顺序搜索特定的项,然后返回该项在此区域或数组中的相对位置,经常与其他查找引用函数结合使用,比如index,vlookup,offset等. -01- ...

  • 如何理解Excel公式中的各种符号?

    Q:在Excel公式中,我们会使用各种符号连接数字.单元格或函数,从而获得想要的结果,例如,=SQRT((1234-234)/100)^2.能够总结一下这些符号的使用吗? A:下面是Excel公式中使 ...