ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 348|回复: 10

[已解决] 如何将指定列(有空行,有公式)的数据按指定条件有序排列后并算出这些数据的均值

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-6-8 17:58 | 显示全部楼层 |阅读模式
排序的列中不能出现0,必须从第二行依次往下排序



出来砸到,求大神指点!万份感谢

详建附件表格

详建附件表格

模拟表.zip

9.7 KB, 下载次数: 9

TA的精华主题

TA的得分主题

发表于 2024-6-8 19:19 | 显示全部楼层
本帖最后由 E学子 于 2024-6-8 19:24 编辑
  1. =LET(x,SORT(FILTER(C2:C1000,(C2:C1000<>"")*(D2:D1000=""))),y,COUNT(x),AVERAGE(DROP(DROP(x,ROUND(0.2*y,0)),-ROUND(0.15*y,0))))
复制代码

示例中E列是否有误?缺少了一个210000,图中红色数值。
数据行数给到了1000行,如果不够用的话可自行修改。
得出的最终平均值未做小数位限定,需要的限定的话,根据实际需求(向上/向下舍入还是四舍五入),自己外套ROUND系列函数即可。
1.jpg

240608.rar

9.24 KB, 下载次数: 1

TA的精华主题

TA的得分主题

发表于 2024-6-8 19:29 | 显示全部楼层
=DROP(DROP(SORT(UNIQUE(IF(D2:D100="",C2:C100,""),FALSE,FALSE)),1+ROUND(COUNT(DROP(DROP(SORT(UNIQUE(IF(D2:D100="",C2:C100,""),FALSE,FALSE)),1),-1))*0.2,0)),-1-ROUND(COUNT(DROP(DROP(SORT(UNIQUE(IF(D2:D100="",C2:C100,""),FALSE,FALSE)),1),-1))*0.15,0))

TA的精华主题

TA的得分主题

发表于 2024-6-8 20:56 | 显示全部楼层
  1. =LET(a,IFERROR(UNIQUE(SORT(IF(D2:D19="",1,"")*C2:C19,,1)),""),LET(b,FILTER(a,a>INDEX(a,ROUND(COUNT(a)*20%,))),FILTER(b,b<=INDEX(a,COUNT(a)-ROUND(COUNT(a)*15%,)))))
复制代码


TA的精华主题

TA的得分主题

发表于 2024-6-9 00:12 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
像2楼的老师说的,你模拟的时候少了个21000

=LET(A,FILTER($C$2:$C$1000,($D$2:$D$1000="")*($C$2:$C$1000<>"")),B,COUNT(A),C,FILTER(A,(A>=INDEX(SORT(A,,-1),ROUND(B*0.8,)))*(A<=INDEX(A,ROUND(B*0.85,)))),ROUND(SUM(C)/COUNT(C),))

image.jpg

TA的精华主题

TA的得分主题

发表于 2024-6-9 00:14 | 显示全部楼层
如果你的数据超过1000个,你直接把里面的1000改大了就好了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-6-9 09:28 | 显示全部楼层
夜雨无声1949 发表于 2024-6-9 00:12
像2楼的老师说的,你模拟的时候少了个21000

=LET(A,FILTER($C$2:$C$1000,($D$2:$D$1000="")*($C$2:$C$10 ...

对的 漏了个21000,在这个问题之前一个版本你给予的正确建议,谢谢。今天就模拟下

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-6-9 09:54 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
E学子 发表于 2024-6-8 19:19
示例中E列是否有误?缺少了一个210000,图中红色数值。
数据行数给到了1000行,如果不够用的话可自行修 ...

刚才操作了一把 发现这个公式没问题,谢谢!我想把这个公式运用到腾讯文档的协同表格里,发现有几个函数腾讯文档不支持,如果你熟悉腾讯文档表格的话 能否帮忙优化下!再次感谢

TA的精华主题

TA的得分主题

发表于 2024-6-9 10:08 | 显示全部楼层
殷圣 发表于 2024-6-9 09:54
刚才操作了一把 发现这个公式没问题,谢谢!我想把这个公式运用到腾讯文档的协同表格里,发现有几个函数 ...

抱歉~在线文档并不熟悉,据我所知,其支持的函数有限,我不知道有哪些函数它是不支持的,没办法帮忙调试了。
目前来看5楼老师的公式里需求版本比较低,LET函数可以去掉(但是会使这一套公式变的非常冗长),而且还是需要使用filter和sort这两个相对要求版本的函数,加上你要求的功能性,本身公式肯定要使用数组,不确保能完美移植到在线文档里。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-6-9 19:27 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
殷圣 发表于 2024-6-9 09:54
刚才操作了一把 发现这个公式没问题,谢谢!我想把这个公式运用到腾讯文档的协同表格里,发现有几个函数 ...

有个超长的公式,你试试。

  1. =AVERAGE(IF((($D$2:$D$1000="")*($C$2:$C$1000<>"")*$C$2:$C$1000>=LARGE(IF(($D$2:$D$1000="")*($C$2:$C$1000<>""),$C$2:$C$1000,""),ROUND(COUNTIFS($D$2:$D$1000,"",$C$2:$C$1000,"<>")*0.8,)))*(($D$2:$D$1000="")*($C$2:$C$1000<>"")*$C$2:$C$1000<=SMALL(IF(($D$2:$D$1000="")*($C$2:$C$1000<>""),$C$2:$C$1000,""),ROUND(COUNTIFS($D$2:$D$1000,"",$C$2:$C$1000,"<>")*0.85,))),($D$2:$D$1000="")*($C$2:$C$1000<>"")*$C$2:$C$1000,""))
复制代码

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-16 13:03 , Processed in 0.040147 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表