excel图表如何按顺序排列
发布时间:2022-04-22 18:06:37
给定单元格区域A1:D5(其中每个单元格中都是整数,并且在该单元格区域内是唯一的),使用单个公式生成一个数组,该数组由该区域中所有连续的数值组成,连续的数值至少包含两个,且返回的数组中的元素按从小到大的顺序排列。
图1
也就是说,可以返回结果:
{1;2;3;12;13;14;15;16;17;36;37}
也可以返回结果:
{1,2,3,12,13,14,15,16,17,36,37}
注意,所给出的公式应包含最少的字符;在公式中必须同时包含行列引用,不允许全是列引用(如A:D)或行引用(如1:5);公式中不允许使用名称。
先不看答案,自已动手试一试。
公式
公式1:
=MODE.MULT(SMALL(A1:D5,ROW(A1:A20)),IF(COUNTIF(A1:D5,A1:D5+1)+COUNTIF(A1:D5,A1:D5-1),A1:D5))
使用了91个字符。
公式2:
=MODE.MULT(IFERROR(SMALL(IF(COUNTIF(A1:D5,A1:D5+1)+COUNTIF(A1:D5,A1:D5-1),A1:D5),ROW(A1:A20))*{1,1},””))
使用了103个字符。
尝试通过同时评估两个COUNTIF构造来缩短此公式构造-并消除了对IFERROR子句的需要,但最终比上述公式稍长一些,有105字符,即公式3:
=MODE.MULT(IF(MMULT(COUNTIF(A1:D5,SMALL(A1:D5,ROW(A1:A20))-{1,-1}),{1;1}),{1,1}*SMALL(A1:D5,ROW(A1:A20))))
或者公式4:
=MODE.MULT(IF(MMULT(COUNTIF(A1:D5,SMALL(A1:D5,ROW(A1:A20))-{1,-1}),{1;1}),SMALL(A1:D5,ROW(A1:A20))),A1:D5)
公式解析
由于我们想要从所给区域中返回一个数组,该数组由区域内至少两个连续的数值构成,因此,执行此操作的一种方法是针对区域内的每个值检查是否在该区域内还会发现比该值大1或小1的值。
这样,我们需要查看下面两种构造的结果:
COUNTIF(A1:D5,A1:D5+1)
和
COUNTIF(A1:D5,A1:D5-1)
由于我们要求对于每个值,其两个返回值中只有一个为非零值即可,因此可以通过简单地将上述构造加在一起,这等价于OR操作。于是,公式中的:
COUNTIF(A1:D5,A1:D5+1)+COUNTIF(A1:D5,A1:D5-1)
转换为:
{0,0,1,0;0,0,0,0;1,1,0,1;1,0,1,1;1,0,0,0}+{0,1,1,0;0,0,0,1;0,1,1,1;1,0,0,0;1,0,0,0}
结果为:
{0,1,2,0;0,0,0,1;1,2,1,2;2,0,1,1;2,0,0,0}
从中可以看出,元素0表示:在区域中未找到比要查找的值大1或小1的值。同样,元素1表示:在区域中找到了比要查找的值大1或小1的值。值2表示在区域中找到了比要查找的值大1的值和小1的值。因此:
IF(COUNTIF(A1:D5,A1:D5+1)+COUNTIF(A1:D5,A1:D5-1),A1:D5)
转换为:
IF({0,1,2,0;0,0,0,1;1,2,1,2;2,0,1,1;2,0,0,0},A1:D5)
得到:
{FALSE,17,14,FALSE;FALSE,FALSE,FALSE,37;12,15,3,2;13,FALSE,1,36;16,FALSE,FALSE,FALSE}
现在,我们已经生成了所需的值。但是,仍然存在两项工作要解决:按升序对它们进行排序以及删除任何非数字元素。
使用SMALL函数来完成排序操作:
SMALL(IF(COUNTIF(A1:D5,A1:D5+1)+COUNTIF(A1:D5,A1:D5-1),A1:D5),ROW(A1:A20))
转换为:
SMALL({FALSE,17,14,FALSE;FALSE,FALSE,FALSE,37;12,15,3,2;13,FALSE,1,36;16,FALSE,FALSE,FALSE},ROW(A1:A20))
转换为:
SMALL({FALSE,17,14,FALSE;FALSE,FALSE,FALSE,37;12,15,3,2;13,FALSE,1,36;16,FALSE,FALSE,FALSE},{1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20})
结果为:
{1;2;3;12;13;14;15;16;17;36;37;#NUM!;#NUM!;#NUM!;#NUM!;#NUM!;#NUM!;#NUM!;#NUM!;#NUM!}
通常,我们可能试图通过构造一个合适的数组传递给SMALL函数作为其参数k的值来缩小数组,然而,这里使用了MODE.MULT函数,更简洁。注意,这里使用的缩小数组的技术,当我们希望返回的元素在被处理的数组中出现的频率相等时才合适。此外,该频率必须至少为两倍,因为如果没有一个以上的值出现,那么MODE.MULT不会返回任何值。
因此,先与数组{1,1}相乘的原因是,当我们将SMALL构造(一个20行1列的数组)与数组{1,1}(一个1行2列的数组)相乘时,生成20行2列的数组,其每行中列的元素都是相同的。这样:
SMALL(IF(COUNTIF(A1:D5,A1:D5+1)+COUNTIF(A1:D5,A1:D5-1),A1:D5),ROW(A1:A20))*{1,1}
转换为:
{1;2;3;12;13;14;15;16;17;36;37;#NUM!;#NUM!;#NUM!;#NUM!;#NUM!;#NUM!;#NUM!;#NUM!;#NUM!}*{1,1}
结果为:
{1,1;2,2;3,3;12,12;13,13;14,14;15,15;16,16;17,17;36,36;37,37;#NUM!,#NUM!;#NUM!,#NUM!;#NUM!,#NUM!;#NUM!,#NUM!;#NUM!,#NUM!;#NUM!,#NUM!;#NUM!,#NUM!;#NUM!,#NUM!;#NUM!,#NUM!}
可以看出,我们已经成功地使每个元素的数量简单地翻了一倍,现在可以安全地将其传递给MODE.MULT函数。但是,我们先要消除这些错误值。像绝大多数函数一样,MODE.MULT函数不会处理包含此类错误值的数组。
这样,公式中的:
IFERROR(SMALL(IF(COUNTIF(A1:D5,A1:D5+1)+COUNTIF(A1:D5,A1:D5-1),A1:D5),ROW(A1:A20))*{1,1},””)
转换为:
IFERROR({1,1;2,2;3,3;12,12;13,13;14,14;15,15;16,16;17,17;36,36;37,37;#NUM!,#NUM!;#NUM!,#NUM!;#NUM!,#NUM!;#NUM!,#NUM!;#NUM!,#NUM!;#NUM!,#NUM!;#NUM!,#NUM!;#NUM!,#NUM!;#NUM!,#NUM!},””)
得到:
{1,1;2,2;3,3;12,12;13,13;14,14;15,15;16,16;17,17;36,36;37,37;””,””;””,””;””,””;””,””;””,””;””,””;””,””;””,””;””,””}
最后,将其传递给MODE.MULT函数:
MODE.MULT(IFERROR(SMALL(IF(COUNTIF(A1:D5,A1:D5+1)+COUNTIF(A1:D5,A1:D5-1),A1:D5),ROW(A1:A20))*{1,1},””))
转换为:
MODE.MULT({1,1;2,2;3,3;12,12;13,13;14,14;15,15;16,16;17,17;36,36;37,37;””,””;””,””;””,””;””,””;””,””;””,””;””,””;””,””;””,””})
得到:
{1;2;3;12;13;14;15;16;17;36;37}
小结
MODE.MULT函数的妙用!


猜你喜欢
- iOS 10.2正式版怎么升级?在经过了iOS 10.2长达7个测试版的测试之后,苹果终于在今天发布以及向广大iOS用户开始推送了iOS 1
- Snipaste截图工具是一款截图工具,在使用Snipaste截取电脑屏幕上的图像时,用户可以通过设置最大历史截屏区域数来控制截图的大小,具
- 戴尔XPS系列笔记本凭借微边框设计,获得了广大消费者的一致认可。最近有消息称,新一代XPS 15笔记本预计将在明年初发布(应该是CES 20
- 首先说明,这种效果是通过对自己的文档分节而实现的,对每一节编辑不同的页脚。像一本书的就分成了三节,然后编辑各自的页码。那么如何分节呢?用分隔
- 系统服务在计算机中是很重要的组成部分,当电脑遇到点什么问题,或者我们想了解电脑的一些信息都可以通过查看系统服务来解决。那么Win7中的系统服
- 旅游的小伙伴经常会看到形状各异的植物,由于不知道名称,所以不好搜索。实际上,百度支持识图功能。百度识图一、电脑百度1.把图片存入电脑2.打开
- ☆ 封面示例图:☆ 难点:补充其中内容时,后面的下划线始终无法对齐。封面的主体文字,可由复制得到,不必全部依赖自己。简述设置步骤:☆ 论文封
- 今天凌晨,苹果正式发布 iOS 14.5 正式版,可谓是 iOS 14 阶段到目前为止最大的升级。iOS 14.5 正式版的版本号是 18E
- 用的用户在Win11正式版发布的时候就进行了升级,升级完后发现玩游戏变得非常的卡,还会掉帧,重启后还是出现了这情况,那到底是什么原因呢,可能
- 在微博之后,视频直播称为现今最流行的互动社交模式。本着人家有我也得有的原则,微软也开始涉足这一领域。最新消息,微软刚刚正式收购了西雅图互动式
- 微软推送了Win10 Mobile一周年更新预览版首个重大更新14322,在该版本中,微软开始引入大量UI/UX和功能性改变,包括通知中心的
- 一些MAC用户发现自己的电脑安装了新的SSD硬盘后,进行测试后,发现系统的运行速度还是很慢,这是怎么回事呢?原来是achi尚未开启。因此今天
- win11usb共享网络电脑没反应怎么办?我们在没有网络的时候,可以通过usb连接手机和电脑,共享其中的网络,最近有用户在win11电脑上使
- 单元格内有一些特殊字符想要删除,一个个删太耽误工作,那么Excel怎么批量去除特殊字符?这篇文章主要介绍了Excel批量去除特殊字符方法,需
- 1.选中需要找出重复数据的单元格内容。,接着依次点击工具栏的“样式”→“条件样式”→“突出显示单元格规则”→“重复值”。 &n
- 在电脑上发送或者接收文件的时候,因为文件太大,传需要花时间,而且不易储存,所以都会将文件进行压缩,这样在接收文件的时候就会很方便。接收到压缩
- 你知道在wps表格里怎样修改单元格格式吗?下面就让小编告诉你wps表格修改单元格格式的方法,希望对大家有所帮助。wps表格修改单元格格式的方
- 最近,有不少用户都下载使用了Steam,而不少用户最近在使用的时候也遇到了一些问题,例如有的用户在使用的时候打开社区却显示错误代码-2无法正
- 本文介绍Microsoft Excel中IMPRODUCT函数的语法和用法。函数说明IMPRODUCT函数的主要作用是返回以 x+yi 或
- wps文字给背景图片水印方法。为了保护我们自己的劳动成果,我们可以在wps文档中为背景图片添加水印,但是对于大多数人来说还是不太懂,下面就让