Loading [MathJax]/jax/input/TeX/jax.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >精通Excel数组公式15:使用INDEX函数和OFFSET函数创建动态单元格区域(续)

精通Excel数组公式15:使用INDEX函数和OFFSET函数创建动态单元格区域(续)

作者头像
fanjy
发布于 2021-03-12 08:46:05
发布于 2021-03-12 08:46:05
4.6K0
举报
文章被收录于专栏:完美Excel完美Excel

excelperfect

导语:本文为《精通Excel数组公式14:使用INDEX函数和OFFSET函数创建动态单元格区域》的后半部分。

将动态单元格区域公式定义为名称

创建动态单元格区域的公式不能直接用于创建数据有效性下拉列表。然而,可以将其定义为名称,然后在创建数据有效性下拉列表时使用这个名称。

定义名称有很多好处,包括:

1.在有动态单元格区域公式时,使用定义名称是很有用的,因为定义名称可用于许多情形,诸如公式、图表、数据透视表、VBA、以及其他接受单元格区域或公式的地方。

2.如果对包含需要按Ctrl+Shift+Enter的公式创建定义名称,然后在单元格公式中使用该定义名称,那么不需要按Ctrl+Shift+Enter。

当数据不一致时的动态表公式

有时,在数据集中可能存在空行或者有一列或多列缺失数据,但仍然想要使用公式定义包括最后数据所在行的单元格区域,如下图6所示。

图6:部分数据缺失,需要公式来定义单元格区域A2:C6

可以使用数组公式:

=A2:INDEX(C2:C7,MAX((ROW(A2:C7)-ROW(A2)+1)*(A2:C7<>"")))

也可以使用数组公式:

=A2:INDEX(C2:C7,AGGREGATE(14,4,(ROW(A2:C7)-ROW(A2)+1)*(A2:C7<>""),1))

如果数据集中某些空单元格中存在空格,则可以在公式中加上TRIM函数:

=A2:INDEX(C2:C7,MAX((ROW(A2:C7)-ROW(A2)+1)*(TRIM(A2:C7<>""))))

使用OFFSET函数创建动态单元格区域

OFFSET函数的使用非常直接:告诉OFFSET函数动态单元格区域的起始位置,想要从该位置偏移多少个单元格(行数和列数),以及高和宽,那么OFFSET函数就定义了一个单元格区域。

如下图7所示,在列A中只输入数据且在最后一个数字之前没有空单元格且范围不超过单元格A10。公式中,动态单元格区域的起始位置为单元格A2,没有向下和向右偏移(参数rows和cols均为空),高度(参数height)为2,宽度(参数width)为1(公式中省略了该参数,取默认值)。因此,返回的单元格区为A2:A3。

图7:OFFSET函数定义了单元格区域A2:A3

使用动态单元格区域定义在表里的表:OFFSET或INDEX?

如下图8所示的数据集,在第一列是城市名,由于在每个城市中有多个代表,因此有些城市是重复的。现在,要根据单元格E2中的城市名,创建由代表姓名组成的动态单元格区域。例如,如果单元格E2中是“Seattle”,那么需要公式定义单元格区域B4:B6;如果单元格E2中是“SF”,那么需要公式定义单元格区域B2:B3。

图8:根据城市名获取相应的单元格区域

下面是可以实现上述目的的3个数组公式。

公式1:

=OFFSET(B1,MATCH(E2,A2:A6,0),,COUNTIF(A2:A6,E2))

公式2:

=INDEX(B2:B6,MATCH(E2,A2:A6,0)):INDEX(B2:B6,MATCH(E2,A2:A6,0)+COUNTIF(A2:A6,E2)-1)

公式3:

=INDEX(B2:B6,MATCH(E2,A2:A6,0)):INDEX(B2:B6,MATCH(2,1/(A2:A6=E2)))

使用OFFSET和INDEX函数创建动态单元格区域的比较

OFFSET是易失性函数,而INDEX不是。如果在解决方案面临的情形下,易失性不重要,那么是使用OFFSET还是INDEX看个人喜好。OFFSET函数使用定义起始位置的输入和单元格大小来创建动态单元格区域,而INDEX函数通过查找单元格引用或行列引用来创建动态单元格区域。

使用动态单元格区域定义的名称的图表

动态单元格区域公式的一个用处是创建图表。例如:

1.如果有一个可能添加或删除记录的数据集,那么当数据变化时图表会自动更新。

2.基于单元格中的条件,为不同的数据绘制图表。

使用动态单元格区域创建图表的一般步骤如下:

1.创建动态单元格区域公式。

2.使用动态单元格区域公式定义名称。

3.创建图表。

4.将定义的名称插入到图表中。

如下图9所示,当单元格F1中选择城市名时,会绘制该城市相应的代表及销售额。

图9:根据选择的数据来绘制图表

定义的名称如下:

名称:SalesDynamic

引用位置:

=OFFSET(C1,MATCH(F1,A2:A6,0),,COUNTIF(A2:A6,F1))

名称:RepsDynamic

引用位置:

=INDEX(B2:B6,MATCH(F1,A2:A6,0)):INDEX(B2:B6,MATCH(F1,A2:A6,0)+COUNTIF(A2:A6,F1)-1)

然后,选择数据区域,绘制图表。接着,在公式栏中,将代表的数据区域修改为上面定义的名称。

示例:总是获取一列中倒数5个数字

如下图10所示,在单元格区域A2:A10中包含一些数字和空单元格。现在,想要使用公式求倒数5个数据之和。(这里的倒数几个数据,是指从最后一个数据开始向前数)

图10:计算一列中倒数5个数字之和

很显然,最后一个数据是单元格A8中的1,倒数5个数据,如果包含空单元格,则为A4:A8;如果不包含空单元格,则为A3:A8。

在单元格C5中的公式:

=SUM(INDEX(A2:A10,MATCH(9.99E+307,A2:A10)-C2+1):INDEX(A2:A10,MATCH(9.99E+307,A2:A10)))

在单元格C7中的数组公式:

=SUM(INDEX(A2:A10,LARGE(IF(ISNUMBER(A2:A10),ROW(A2:A10)-ROW(A2)+1),C2)):INDEX(A2:A10,MATCH(9.99E+307,A2:A10)))

注:本文为电子书《精通Excel数组公式(学习笔记版)》中的一部分内容节选。你可以到知识星球App的完美Excel社群下载这本电子书的完整中文版。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
精通Excel数组公式14:使用INDEX函数和OFFSET函数创建动态单元格区域
动态单元格区域是指当添加或删除源数据时,或者随着包含单元格区域的公式被向下复制时根据某条件更改,可以自动扩展或收缩的单元格区域,可以用于公式、图表、数据透视表和其他位置。
fanjy
2021/02/05
9.9K0
Excel公式练习40: 从单元格区域的字符串中提取唯一值
导语:继续研究来自于excelxor.com的案例。坚持到现在的,应该都有感觉了!
fanjy
2020/02/26
2.5K0
【Excel】用公式提取Excel单元格中的汉字
昨天一个前端的朋友找我帮忙用excel提取代码中的汉字(字符串),可算费了劲儿了,他要提取的内容均在单引号中,但问题是没有统一的规律,同一个单元格可能存在多个要提取的内容,而且汉字中间也夹杂其他字符。
数据科学社区
2018/06/11
12.7K0
Excel公式技巧24: Excel公式中的降维技术
看过前面一系列文章的朋友,一定会熟悉“重新定义数组维度”的概念。这是一项非常有用且非常重要的技术,使我们可以接受二维数组并将其转换为一维数组,同时将元素保留在该数组中。
fanjy
2020/03/25
2.5K0
Excel公式技巧24: Excel公式中的降维技术
常用的10个 Excel 万能公式套路
很多同学懒的学函数,但遇到问题又不得不搜百度求高手解决。其实,有不少公式是不需要理解的,直接套用就行。今天分享10个超好用的万能公式套路,需要的赶紧收藏吧。
matinal
2020/11/27
1.3K0
常用的10个 Excel 万能公式套路
精通Excel数组公式021:提取唯一值列表并排序
本文将综合使用前面系列中学习到的技术,包括布尔逻辑、动态单元格区域、提取满足条件的数据、统计唯一值等,创建出一个解决问题的大型公式。当然,如果你不需要自动动态更新数据,完全可以使用Excel内置的高级筛选或数据透视表功能。
fanjy
2021/03/12
5.5K0
精通Excel数组公式022:提取唯一值列表并排序(续)
下图12展示了两个对数字进行排序的公式。使用SMALL/ROWS函数从小到大排序,使用LARGE/ROWS函数从大到小排序。
fanjy
2021/03/12
5.7K0
36条常用Excel技巧 收藏备用!
1、两列数据查找相同值对应的位置 =MATCH(B1,A:A,0) 2、已知公式得结果 定义名称=EVALUATE(Sheet1!C1) 已知结果得公式 定义名称=GET.CELL(6,Sheet1!C1) 3、强制换行 用Alt+Enter 4、超过15位数字输入 这个问题问的人太多了,也收起来吧。一、单元格设置为文本;二、在输入数字前先输入' 5、如果隐藏了B列,如果让它显示出来? 选中A到C列,点击右键,取消隐藏 选中A到C列,双击选中任一列宽线或改变任一列宽 将鼠标移到到AC列之间,等鼠标变为双竖线
CDA数据分析师
2018/02/24
3.9K0
Excel公式练习64: 获取单元格区域中移除空单元格后的值
导语:在前面的文章中有一些与本文类似的案例。要想熟练掌握一门技术,就是要不断地反复练习。
fanjy
2020/05/25
3.5K0
Excel公式练习64: 获取单元格区域中移除空单元格后的值
Excel实战技巧:基于单元格的值显示相应的图片
选择零件号,显示相应的零件图;选择员工姓名,显示该员工相片,等等,都是选择单元格中的值而显示相应的图片的例子,也就是说基于单元格的值查找并显示对应的图片,单元格的值改变,图片也自动改变。效果如下图1所示。
fanjy
2023/02/24
10.5K0
Excel实战技巧:基于单元格的值显示相应的图片
Excel公式技巧43:OFFSET函数应用技巧
OFFSET函数是我们经常会用到的一个函数,能够以某单元格为基点,偏移得到指定位置的单元格或者单元格区域。其语法为:
fanjy
2020/08/04
1.4K0
Excel公式技巧43:OFFSET函数应用技巧
你需要的Excel常用函数都在这里!
Excel常用函数包括逻辑函数、数学函数、文本函数、统计函数、日期函数,熟练并运用好函数,能够让复杂的问题简单化,可以做到批处理,加快处理各种统计、计算类工作。
数据STUDIO
2021/06/24
4.7K0
Excel 公式、图表以及单元格的操作
SUM 函数将值相加,可以将单个值、单元格引用或是区域相加,或者将三者的组合相加。例如: =SUM(A1:A3)将单元格 A1:A3 中的值加在一起,=SUM(A1:A3,B1:B3)将单元格 A1:A3 以及单元格 B1:B3 中的值加在一起。语法:SUM(number1,[number2],…),number1(必需):要相加的第一个数字。该数字可以是 4 之类的数字,A1 之类的单元格引用或 A1:A3 之类的单元格范围。number2(可选):要相加的第二个数字。可以按照这种方式最多指定 255 个数字。下面我们来看怎么通过 Python 使用 SUM 函数。代码如下:
芯动大师
2022/11/15
1.5K0
Excel 公式、图表以及单元格的操作
关于单元格区域,99%的用户都不知道的事儿
在Excel中使用单元格区域是最基础的操作,似乎一切都自然而然,不需要教,例如,选择一些单元格,开始单元格和结束单元格之间会有一个:(冒号)符号,也许可以加入几个$(美元符号)来固定单元格引用的位置。
fanjy
2023/08/30
3180
关于单元格区域,99%的用户都不知道的事儿
Excel公式技巧17: 使用VLOOKUP函数在多个工作表中查找相匹配的值(2)
我们给出了基于在多个工作表给定列中匹配单个条件来返回值的解决方案。本文使用与之相同的示例,但是将匹配多个条件,并提供两个解决方案:一个是使用辅助列,另一个不使用辅助列。
fanjy
2020/03/12
16.7K0
【学习】请速度收藏,Excel常用电子表格公式大全
1、查找重复内容公式:=IF(COUNTIF(A:A,A2)>1,”重复”,””)。 2、用出生年月来计算年龄公式:=TRUNC((DAYS360(H6,”2009/8/30″,FALSE))/360,0)。 3、从输入的18位身份证号的出生年月计算公式:=CONCATENATE(MID(E2,7,4),”/”,MID(E2,11,2),”/”,MID(E2,13,2))。 4、从输入的身份证号码内让系统自动提取性别,可以输入以下公式: =IF(LEN(C2)=15,IF(MOD(MID(C2,15
小莹莹
2018/04/18
3.1K0
Excel公式练习38: 求一列中的数字剔除掉另一列中的数字后剩下的数字
导语:继续研究来自于excelxor.com的案例。这个案例看似简单,然而实现起来却比较难,这里面用到的技巧值得学习。
fanjy
2020/02/26
4.3K0
Excel公式练习58: 获取与查找值相对应的多个值
导语:本文所讲的案例在第一季公式练习中有相似的例子,这里再巩固一下。只要知道要在公式中使用的函数,没有Excel解决不了的问题!
fanjy
2020/04/22
3.3K0
Excel公式技巧44: 对文本进行排序
在《Excel公式技巧39: COUNTIF函数在文本排序中的应用》中,我们使用COUNTIF函数来求得单元格区域中文本的顺序号,然后根据该顺序号获得相应的文本,从而实现文本排序。本文不使用辅助列,直接使用一个数组公式来获得排序文本。
fanjy
2020/08/04
4.2K0
Excel公式技巧44: 对文本进行排序
Excel创建动态单元格区域
美术同学找我说想要一个查找引用功能,大体的表结构我看了一下有点奇怪(主要是命名一样),可能因为历史原因暂时也不太好修改,只好用Excel函数实现他所需要的功能。
meteoric
2022/09/08
1.7K0
Excel创建动态单元格区域
推荐阅读
相关推荐
精通Excel数组公式14:使用INDEX函数和OFFSET函数创建动态单元格区域
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档