草庐IT

怎样去掉最大值和最小值,计算每类的平均值?

甘彬 2023-03-28 原文

前段时间在一家企业培训EXCEL课程的时候,学员小V咨询如何计算出下方这个表格中,每个部门的考试分,去掉一个最高分和一个最低分之后的平均分。


我们先来介绍如果不分类,只是计算考试分数列,去掉最大值和最小值之后计算平均值,应该用哪个函数来实现。

01 TRIMMEAN函数

这里需要用到TRIMMEAN函数返回数据集的内部平均值。TRIMMEAN 计算排除数据集顶部和底部尾数中数据点的百分比后取得的平均值。

函数语法:TRIMMEAN(array, percent)

Array:需要进行整理并求平均值的数组或数值区域。

percent:从计算中排除数据点的分数。例如,如果 percent=0.2,从 20 点 (20 x 0.2) 的数据集中剪裁 4 点:数据集顶部的 2 点和底部的2 点。

那这里的公式要这样写:

=TRIMMEAN(C2:C17,2/COUNT(C2:C17))

第1个参数是考试分数所在的数据区域,第2个参数是要去掉几个数字,比如这里要去掉1个最大值和1个最小值,也就是2个数字,去除除以这一列的总个数,用COUNT函数计算出总个数,算出百分比。就得到了去掉最大值和最小值之后的平均值。

理解了这个函数的语法之后,我们再来思考学员小V要实现的分类去最大值和最小值算平均值要如何实现。也就是说,第1个参数要是动态的一个区域,根据E4到E7的部门名称,到C列获取对应部门的考试分。

02 COUNTIFS函数

这里为了方便后面的计算,我们先用COUNTIFS的分类计数函数,计算出每个部门的人数。此函数的语法是:

COUNTIFS(条件范围1,条件1,条件范围2,条件2,……)

本例中的函数是:=COUNTIFS($A$2:$A$17,E4)

03 OFFSET函数

之后我们需要借助动态区域的OFFSET函数来根据E4:E7的部门名称,到A列中动态选择对应的部门列表。我们先来看一下OFFSET函数的语法:

OFFSET(起始地址,向上/下偏移的行数,向左/右偏移的列数,返回的行数,返回的列数)

如果是向上和向左偏移就输入负数。

举例说明一下这个函数的用法,比如我现在要返回“办公室”这个部门的员工对应的考试分数所在的区域,也就是C2:C5这个范围,那我的OFFSET函数就可以这样来写:

OFFSET(C1,1,0,4,1)

C1是考试分列的起始地址,第1个参数1是指向下偏移1行,移动到C2;第3个参数0是指没有向右的偏移;第4个参数4是指一共有4个单元格是办公室;第5个参数1是指要返回1列的数据,也就是最后的数据区域是C2:C5这个动态的区域。

现在我们就需要把第2个和第3个参数变成动态。

04 MATCH 查询位置

我们需要查询“办公室”在A列中的起始位置,这时候就需要用到MATCH这个查询位置的函数,我们先来看看MATCH函数的语法。

MATCH(查询值,包含查询值的1行或1列,0/1)

0:精确查询  1:区间查询

本例中的函数是:MATCH(E2,A1:A17,0)

现在我们来把这几个函数组合在一起,公式如下:

=TRIMMEAN(OFFSET($C$1,MATCH(E4,$A$2:$A$17,0),0,F4,1),2/F4)

到此,就实现了小V需要的去掉最大值和最小值,计算出每类的平均值。

有关怎样去掉最大值和最小值,计算每类的平均值?的更多相关文章

  1. ruby-on-rails - 如果我将 ruby​​ 版本 2.5.1 与 rails 版本 2.3.18 一起使用会怎样? - 2

    如果我使用ruby​​版本2.5.1和Rails版本2.3.18会怎样?我有基于rails2.3.18和ruby​​1.9.2p320构建的rails应用程序,我只想升级ruby的版本,而不是rails,这可能吗?我必须面对哪些挑战? 最佳答案 GitHub维护apublicfork它有针对旧Rails版本的分支,有各种变化,它们一直在运行。有一段时间,他们在较新的Ruby版本上运行较旧的Rails版本,而不是最初支持的版本,因此您可能会发现一些关于需要向后移植的有用提示。不过,他们现在已经有几年没有使用2.3了,所以充其量只能让更

  2. 怎样用一台手机做自媒体? - 2

    其实做自媒体的成本并不高,入门只需要一部手机即可!在手机上找视频素材、使用手机剪辑视频、最后使用手机发布视频作品获得收益!方法并不难,今天这期内容就来给粉丝们分享一种小方法,每天稳定收益100-300,抓紧点赞收藏!1、找素材(1)使用手机拍摄自己喜欢的经典段落,使用程序把文案内容提取出来(2)也可以在豆瓣、知乎、微博等网站中找一些自己需要的文案素材(3)把文案进行润色修改,可以加入一些自己的观点(4)视频素材可以使用软件中自带的素材,也可以在素材网站中下载完整版的素材2、文案配音(1)把复制好的文案直接导入小程序中(2)调整音色、音调后一键合成音频即可(3)可以选择自己朗读配音,需要花一点时

  3. ruby - 我怎样才能只写一次 "Text"并同时检查 path_info 是否包含 'A' ? - 2

    -if!request.path_info.include?'A'%{:id=>'A'}"Text"-else"Text"“文本”写了两次。我怎样才能只写一次并同时检查path_info是否包含“A”? 最佳答案 有两种方法可以做到这一点。使用部分,或使用content_forblock:如果“文本”较长,或者是一个重要的子树,您可以将其提取到一个部分。这会使您的代码变干一点。在给出的示例中,这似乎有点矫枉过正。在这种情况下更好的方法是使用content_forblock,如下所示:-if!request.path_info.inc

  4. ruby-on-rails - 需要帮助最大化多个相似对象中的 3 个因素并适当排序 - 2

    我需要用任何语言编写一个算法,根据3个因素对数组进行排序。我以度假村为例(如Hipmunk)。假设我想去度假。我想要最便宜的地方、最好的评论和最多的景点。但是,显然我找不到在所有3个中都排名第一的方法。Example(assumingthereare20importantattractions):ResortA:$150/night...98/100infavorablereviews...18of20attractionsResortB:$99/night...85/100infavorablereviews...12of20attractionsResortC:$120/night

  5. ruby-on-rails - rspec - 我怎样才能让 "pendings"有我的文本而不仅仅是 "No reason given" - 2

    我有这个代码:context"Visitingtheusers#indexpage."dobefore(:each){visitusers_path}subject{page}pending('iii'){shouldhave_no_css('table#users')}pending{shouldhavecontent('Youhavereachedthispageduetoapermissionic错误')}它会导致几个待处理,例如ManagingUsersGivenapractitionerloggedin.Visitingtheusers#indexpage.#Noreason

  6. ruby - 我怎样才能更好地了解/了解更多关于 Ruby 的知识? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我最近开始学习Ruby,这是我的第一门编程语言。我对语法感到满意,并且我已经完成了许多只教授相同基础知识的教程。我已经写了一些小程序(包括我自己的数组排序方法,在有人告诉我谷歌“冒泡排序”之前我认为它非常聪明),但我觉得我需要尝试更大更难的东西来理解更多关于Ruby.关于如何执行此操作的任何想法?

  7. Ruby:我怎样才能复制这个数组? - 2

    (跟进我之前的问题,Ruby:howcanIcopyavariablewithoutpointingtothesameobject?)我正在编写一个简单的Ruby程序来在.svg文件中进行一些替换。第一步是从文件中提取信息并将其放入数组中。为了避免每次调用此函数时都从磁盘读取文件,我尝试使用memoize设计模式-在第一次调用后的每次调用中都使用缓存结果。为此,我使用了一个在函数之前定义的全局变量。但是,即使我在返回局部变量之前将该变量.dup为局部变量,调用该变量的函数仍在修改全局变量。这是我的实际代码:#memoizetokeepfromhavingtoreadoriginalfi

  8. ruby - 获取数组中值的最大连续出现次数 - 2

    下面有没有更优雅的方法来实现这个:输入:array=[1,1,1,0,0,1,1,1,1,0]输出:4我的算法:streak=0max_streak=0arr.eachdo|n|ifn==1streak+=1elsemax_streak=streakifstreak>max_streakstreak=0endendputsmax_streak 最佳答案 类似于w0lf'sanswer,但通过从chunk返回nil来跳过元素:array.chunk{|x|x==1||nil}.map{|_,x|x.size}.max

  9. ruby - 我怎样才能让一个字段更新/更改另一个字段? - 2

    我想让字段由另一个字段解析。我有一个根据一些参数生成的列表,想更新总字段我的方法可能不正确。显然,我试图避免重新运行相同的数据库查询并在查询字符串中向上传递一个级别的过滤器。因此假设我的查询使用以下ruby​​类型:Types::PostListType=GraphQL::ObjectType.definedoname'PostList'field:total,!types.Int,default_value:0#(user,*_args){posts=function_to_filter(args[:filter])#howdoIupdatetotalwithposts.counth

  10. ruby-on-rails - 在处理电子邮件回复时,我怎样才能忽略任何电子邮件客户端细节和历史记录? - 2

    我有一个通过IMAP处理传入电子邮件的Rails应用程序。当前使用一种方法来搜索TMail对象的各个部分以查找给定的content_type:defself.search_parts_for_content_type(parts,content_type='text/html')parts.eachdo|part|ifpart.content_type==content_typereturnpart.bodyelseifpart.multipart?ifbody=self.search_parts_for_content_type(part.parts,content_type)ret

随机推荐