ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 返回数组最后出现的N个数据(非最大最小值,而是N个最近值)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-10-4 03:32 | 显示全部楼层 |阅读模式
各位大佬,想要在营业额中获取最近N(大于4时取4,小于4时返回实际数)个数值的平均数。

直接用VERAGEIFS的话,只能取到符合条件的数组(全部数据),是否可以在这个函数的基础上达成?
另外使用了if数组获取相关数据的位置用N+offset返回数据,接近达成了但是没达成(当数据大于4个以上时,完全就是取全部平均)。
在countifs上加if感觉会越来越长,运算过多会卡。
因为其他数据还要基于这条继续运算,感觉会很卡。
另外是否有什么公式可以达到 if(公式=0,A1,公式)的效果,但是不运算两次公式,像iferror一样判断到错误就返回其他值一样判断到0就返回其他值。
卡在这里了,帮忙看看。

返回最近四个值的平均数.zip

8.89 KB, 下载次数: 23

TA的精华主题

TA的得分主题

发表于 2022-10-4 09:54 | 显示全部楼层
您模拟结果是最后"4"个吗?
还是因为我没看懂

TA的精华主题

TA的得分主题

发表于 2022-10-4 10:01 来自手机 | 显示全部楼层
本帖最后由 HSIAOQIANG 于 2022-10-4 12:05 编辑

image.png
需要365最新函數

TA的精华主题

TA的得分主题

发表于 2022-10-4 11:55 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. =AVERAGE(IFERROR(INDEX(B:B,LARGE(IF((表1[店铺]=D3)*(表1[金额]>0),ROW(2:15)),{4;3;2;1})),""))
复制代码

TA的精华主题

TA的得分主题

发表于 2022-10-4 13:56 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
=AVERAGE(TAKE(FILTER(表1[金额],(表1[店铺]=D3)*(表1[金额]>0)),-4))

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-10-4 17:04 | 显示全部楼层
sandays 发表于 2022-10-4 13:56
=AVERAGE(TAKE(FILTER(表1[金额],(表1[店铺]=D3)*(表1[金额]>0)),-4))

take是新函数,哈wps还没有,个人版365好像也没敲出来。
请问-4这里如果要达到我想要的效果(大于4取-4,小于4取实际计数)的话,-4要改成(if(filter()>3=4,filter())吗,这样我感觉重复用filter会很长很卡,条件很多。
是否可以优化达成。

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-10-4 17:05 | 显示全部楼层
会计男 发表于 2022-10-4 17:04
take是新函数,哈wps还没有,个人版365好像也没敲出来。
请问-4这里如果要达到我想要的效果(大于4取-4 ...

另外不使用take,是否还有其他函数可以达到同样效果。谢谢。

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-10-4 17:08 | 显示全部楼层

你好,{1234}我之前试过,当数据源返回大于4个才有用,所以我才换offset+countifs,但是仍然没有达到。
(大于4取-4,小于4取实际计数),如果再加if感觉很冗长,是否有什么好的方案可以达到效果。

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-10-4 17:12 | 显示全部楼层

谢谢大佬,我另外再学习学习这些新公式,现在用的环境的公司电脑主要是wps和旧版office,用不了这些新公式,是否可以用旧公式达到效果。

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-10-4 17:17 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
sandays 发表于 2022-10-4 09:54
您模拟结果是最后"4"个吗?
还是因为我没看懂

模拟结果返回了非0的所有值,跟直接用averageifs是一样的,用这个呈现是感觉averageifs没办法直接获取最后出现的4个值(我搞不出来),最终用这个可以做到偏靠近完成的形态,但是如果我要继续改,后面的ROW(OFFSET(H1,,,COUNTIFS(表1[金额],">0",A2:A15,A2),))),,,)要加if把>4的返回row(1:4),实际应用还有很多条件会比较长比较卡,所以想取取经。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-11 00:35 , Processed in 0.026071 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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