excel - 5 个特定单元格的平均值,包括活动行上面的 2 个/下面的 2 个跳过空白而不是包含在范围内
问题描述
我的 Excel 技能相对有限,所以我不确定这是否可以用公式来完成,但我希望它可以作为我的宏技能去录制宏和进行基本编辑。
基本上我有一张年表,包括前一年的 12 月和次年的 1 月。此处链接的表格是其外观的快照,2-1-2 日平均价格 ,日期列是 A 列。
本质上,我需要在 5 个可能不连续的日子里从每日平均列中输入 5 天的平均值。我需要完全跳过空白单元格,即周六和周日,并且不将它们包括在任何范围内,但这是我遇到麻烦的地方,它还需要跳过某些工作日,即未公布价格的公共假期。我还需要能够将其复制/拖动到列中的所有单元格,例如 2017 年 12 月至 2019 年 1 月,每年滚动计算,考虑到每年都会发生变化的公共假期,或者能够每年进行简单的编辑。
我输入了一个嵌套的 If 语句,该语句返回 1 表示周六、周日或公共假期以外的任何内容,而返回 0 表示所有内容。由于知识有限,而且我找不到简单的东西来从每日平均列中排除空白,这是/是我最有希望的选择,但我找不到我需要的确切公式来平均一个单元格活动行,以及基于不同列的值上下的前 2 个。
我在这个网站和
其他地方找到了形式的公式,
=IFERROR(SUM(A10;B13;C5;D6;D8)/((A10<>0)+(B13<>0)+(C5<>0)+(D6<>0)+(D8<>0));0)
但
问题是它基于整个范围的平均值,而不仅仅是我需要的五个。我还发现这并没有做太多,因为它似乎有类似的最终结果。=AVERAGEIF(B1:B1:B3:B3:B5:B5:B7:B7,">0")
=AVERAGEIF($A$1:$A$500,D1,$B$1:$B$500)
SUMPRODUCT
任何帮助将不胜感激,因为我竭尽全力试图使其工作/花时间自动化整个工作簿,这取决于这项工作并且不会告诉我的经理我的时间被浪费了。
提前感谢您,并为篇幅道歉。
问候,
西蒙
解决方案
您可以将以下数组公式(crtl+shift+enter)放入G3
(假设基于屏幕截图)然后复制下来:
{=AVERAGE(IF(ROW(F3:$F$90)<=SMALL(IF(F3:$F$90<>"";ROW(F3:$F$90));MIN(COUNT(F3:$F$90);5));IF(F3:$F$90<>"";F3:$F$90)))}
一些评论:
- 5 在公式中是硬编码的。最好把它放在某个单元格中,这样你也可以计算其他天的平均值;
- 我假设数据在
F3:$F$90
; - 它还将计算空白行的平均值,因此如果您希望平均值也为空白行,则必须添加一个附加值;
- 该公式也适用于最后一个值,如果少于 5 个,它将只取所有可用的值。
推荐阅读
- css - 有没有办法提高 NativeScript 中 scss 文件加载的性能?
- java - 创建自定义 OAuth 登录页面和自定义 jwt 令牌
- spacy - 安装 spacy 时显示无法安装构建的依赖项
- python - jupyter notebook(Python3)中的默认内核不起作用
- android - “handleWindowVisibility:令牌 android.os.BinderProxy 没有活动”从 FirestoreRecyclerAdapter 启动和活动时
- sql - 如何从xml文件返回数据
- flutter - 从 dart/flutter 中的像素数组中绘制图像的最快方法是什么
- c++ - 关于命名空间和模板参数的名称问题
- amazon-web-services - 如何在列级别使用 AWS KMS 加密 AWS RDS 中的数据?
- python - Django-为什么我得到这个编程错误