Excel公式: 获取非连续单元格区域中只出现一次的数字
发布时间:2023-03-19 03:03:20
Excel公式: 获取非连续单元格区域中只出现一次的数字
本次的练习是:如下图1所示,有一组非连续的单元格区域,由任意数量的单列区域组成,每个区域中的值有数字、文本或空格。要求从单元格A2开始,使用公式生成一个列表,这个列表由上述非连续单元格区域中所有只出现了一次的数字组成(如图1所示,1、2和9这三个数字在非连续的单元格区域中只出现了一次)。
图1
注意,虽然图1中在单元格区域C1:N12中有很多单元格为空,但解决方案的公式中要考虑这些单元格也可能存在数据的情况。
先不看答案,自已动手试一试。
公式
在单元格A2中输入公式:
=IF(ROWS(A$2:A2)>$A$1,””,AGGREGATE(15,6,(ROW(INDIRECT(“1:”& MAX(RNG)+1))-1)/(FREQUENCY(RNG,ROW(INDIRECT(“1:” &MAX(RNG)+1))-1)=1),ROWS(A$2:A2)))
下拉直至出现空单元格为止。
在单元格A1中,公式:
=SUMPRODUCT(–(FREQUENCY(RNG,ROW(INDIRECT(“1:” &MAX(RNG)+1))-1)=1))
计算该非连续单元格区域中满足要求的数字数量。
公式解析
公式中的RNG是定义的名称。
名称:RNG
引用位置:=$C$2:$C$7,$E$2:$E$4,$E$6:$E$9,$G$3:$G$11,$J$1:$J$9,$L$5:$L$6,$N$3:$N$7,$N$9:$N$10,$N$12
注意,这个联合的单元格区域并不能传递给所有的工作表函数,但还是有些工作表函数能够处理它们。
1. 首先,看看单元格A1中返回满足要求的数字数量的公式:
=SUMPRODUCT(–(FREQUENCY(RNG,ROW(INDIRECT(“1:”&MAX(RNG)+1))-1)=1))
这里的重点是使用FREQUENCY函数,该函数是非常有用的一个函数,能够处理这种不连续的单元格区域。
另一个函数是MAX函数,也可以操作多个、非连续的单元格区域,因此:
MAX(RNG)
能够得到组成RNG的单元格区域中所有数值的最大值,忽略逻辑值、文本。很显然,其返回的结果是9。
这样,公式中的:
ROW(INDIRECT(“1:”&MAX(RNG)+1))-1
转换成:
ROW(INDIRECT(“1:”&9+1))-1
转换成:
ROW(INDIRECT(“1:”&10))-1
转换成:
{1;2;3;4;5;6;7;8;9;10}-1
结果为:
{0;1;2;3;4;5;6;7;8;9}
这里,我们创建了一个由0到区域中最大值的数值组成的数组,用于FREQUENCY函数的参数bins_array。
此时,公式中的:
FREQUENCY(RNG,ROW(INDIRECT(“1:”&MAX(RNG)+1))-1)
成为:
FREQUENCY(RNG,{0;1;2;3;4;5;6;7;8;9})
结果为:
{0;1;1;0;0;5;2;2;0;1;0}
因此,公式:
=SUMPRODUCT(–(FREQUENCY(RNG,ROW(INDIRECT(“1:”&MAX(RNG)+1))-1)=1))
可转换为:
=SUMPRODUCT(–({0;1;1;0;0;5;2;2;0;1;0}=1))
转换为:
=SUMPRODUCT(–({FALSE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE}))
两个减号强迫TRUE/FALSE转换成1/0,即:
=SUMPRODUCT({0;1;1;0;0;0;0;0;0;1;0})
结果为3。
2. 下面来看看从单元格A2开始用来获取值的公式:
=IF(ROWS(A$2:A2)>$A$1,””,AGGREGATE(15,6,(ROW(INDIRECT(“1:” &MAX(RNG)+1))-1)/(FREQUENCY(RNG,ROW(INDIRECT(“1:” &MAX(RNG)+1))-1)=1),ROWS(A$2:A2)))
根据前面公式推导的内容,上面的公式中:
AGGREGATE(15,6,(ROW(INDIRECT(“1:”& MAX(RNG)+1))-1)/(FREQUENCY(RNG,ROW(INDIRECT(“1:” &MAX(RNG)+1))-1)=1),ROWS(A$2:A2))
可以转换为:
AGGREGATE(15,6,({0;1;2;3;4;5;6;7;8;9})/({FALSE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE}),ROWS(A$2:A2))
这是以这种方式使用AGGREGATE函数时要注意的关键技术。因为如果我们在此函数中将第二个参数options设置为6,即“忽略错误值”,那么它将恰好做到这一点。
上述公式可转换为:
AGGREGATE(15,6,{#DIV/0!;1;2;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;9;#N/A},ROWS(A$2:A2))
其第一个参数function_num被设置成15,等价于执行SMALL函数。(你可能想,为什么不将第一个参数设置成5,即MIN,这是不合适的。因为在AGGREGATE函数的第一个参数的所有可选项中,仅14-15能够保证在传递给函数的数组不是实际的工作表区域时能正常运行,而这里的数组是由其他函数生成的,如果设置成1-13中的任一个,则需要传递给函数的数组是实际的工作表区域。)
对于单元格A2的公式中来说,最后一个参数k的值是1,即ROWS(A$2:A2)的返回值。因此,AGGREGATE函数部分转换为:
AGGREGATE(15,6,{#DIV/0!;1;2;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;9;#N/A},1)
结果为1。
这样,单元格A2中的公式转换为:
=IF(1>$A$1,””,1)
即:
=IF(1>3,””,1)
结果为1。
猜你喜欢
- 中国大陆普遍使用简体字,而香港、台湾等地一般使用繁体字。繁体字与简体字不仅书写不同,有些词汇的用法也有区别,给我们用户之间的交流带来了不便中
- 脚注,就是在页面下方对本页面中的某些专业性内容进行解释说明的,通常都会进行编号的部分,相信小伙伴们在日常阅读时都看到过。比如我们看到的各种专
- 我们见惯了白底黑字的word文档 可是,你有没想过,不止PPT里可以设置各种背景,其实Word也可以这种背景的设置方法
- Word2003中页面视图、大纲视图详细说明。今天,小编就教大家在Word中设置视图页面的操作方法。Word中设置视图页面的操作步骤如下:页
- 用Excel制作工资条的几种常见方法一、复制粘贴法大家最容易想的方法就是复制标题行,在每一位员工数据行的上方粘贴,手动完成工资条的制作:1、
- 网上关于word文档损坏之后的修复的方法有非常多,比如:将损坏的Word文档转换为另一种格式,创建新的Normal模板等,但是,这一些方法都
- 对于我们正在使用的win101909版本系统,如果在更新和升级系统时出现更新错误,许多小型合作伙伴不知道如何解决0x80073701代码提示
- 很多小伙伴在使用Excel表格的时候有没有感觉Excel加载了很多无效的功能导致卡顿呢?那么出现卡顿问题的时候我们怎么减少Excel加载项呢
- word文档中英文对不齐怎么办?文档过程中发生了中英文无法对齐问题的,可以来采用下文的方法设置对齐中英文哦。那么下面就由小编给大家分享下设置
- 在使用样式过程中,有时需要对已应用相同样式的段落格式进行修改,此时便可通过修改样式来达到在word中批量修改样式的目的。如将“标题2”样式的
- 您可能想要移动Excel 2007数据透视表,以便可以在Excel 2007数据透视表的当前位置插入工作表单元格、行或列。单击Excel 2
- 我们在写文档的时候,如果有一段文字是用来做总结的,或者特别重要的,我们想给这段文字加上边框,醒目显示,具体要怎么做呢?下面给大家分享word
- 我们在日常使用电脑办公的过程当中经常都会遇到需要跟领导、同事之间相互传输文件的时候,其实你只要懂得在Win10电脑系统中设置一下共享文件夹后
- Word出现错误打不开,按照网上的方法删除了Word模板,删除后重启Word,问题还是不能解决。大家都知道,一般情况下,Word出现错误,只
- Word是是一款办公软件,平时我们在使用Word的时候可以用来做文档,也可以用来做表格,是一款操作简单,功能强大的软件,但是对于很多新手小白
- 在Excel工作表中,我们经常会将一个单元格或区域中的数据复制到另一位置。实现复制Excel表格数据的方法有许多种,最基本的是采用“编辑”菜
- 要使用自动更正功能首先得知道如何打开(或关闭)这项功能,打开自动更正功能的操作步骤是:点击菜单栏的“工具”——“自动更正选项”菜单项,打开“
- 32位win10系统支持多大内存32位系统理论上最多支持4G内存,算法是2的32次方,429967296(Bit)。不过在使用时一般32位系
- Word语法错误显示红色波浪线怎么办? 一些用户在从其他的文本文件中复制内容到Word中的时候,发现复制过来的文字,很多文字的下方有红色的波
- 为了让清华大学全校师生更好地利用网络进行教学、科研、学习、交流等活动,该学校免费为师生提供邮件服务(https://mails.tsingh