You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何创建动态公式按指定公司计算最近12条数据的平均值

适配多列的最近12条记录平均值公式解决方案

你已经写出了单列计算的核心公式,现在我们把它扩展成支持按公司名称匹配列、可向下拖拽复用的版本,完美适配新增公司列的场景。

核心公式(数组公式)

假设你的结果区域中,C2单元格是要计算的公司名称(比如"Company1"),在D2输入以下公式(Excel 365/2021可直接回车,旧版本需按Ctrl+Shift+Enter触发数组计算):

=AVERAGE(LOOKUP(LARGE(IF(ISNUMBER(INDEX($G:$XFD,,MATCH($C2,$G$2:$XFD$2,0))),ROW($G:$G)),ROW(INDIRECT("1:"&MIN(12,COUNT(INDEX($G:$XFD,,MATCH($C2,$G$2:$XFD$2,0))))))),ROW($G:$G),INDEX($G:$XFD,,MATCH($C2,$G$2:$XFD$2,0))))

公式拆解(帮你理解每一步)

  • 匹配公司列MATCH($C2,$G$2:$XFD$2,0)
    从表头行(G2到XFD2,覆盖所有可能的列)中找到当前公司名称对应的列位置,比如"Company1"会返回1,对应G列。
  • 动态引用公司列INDEX($G:$XFD,,MATCH(...))
    根据上面得到的列位置,自动引用对应的整个公司数据列(比如G:G、H:H),不管公司列在哪个位置都能精准匹配。
  • 筛选有效行号IF(ISNUMBER(...),ROW($G:$G))
    找出该公司列中所有包含数值的行号,忽略空单元格。
  • 取最近12条记录LARGE(...,ROW(INDIRECT("1:"&MIN(12,COUNT(...)))))
    提取最大的前N个行号(N是该公司列的有效记录数和12的较小值,确保最多取最近12条)。
  • 获取对应数值并计算平均LOOKUP(...) + AVERAGE()
    通过行号找到对应的数值,最后计算这些数值的平均值。

使用步骤

  1. 在结果区域的C列依次输入要计算的公司名称(比如C2=Company1、C3=Company2、C4=Company3);
  2. D2输入上面的公式,完成后拖拽填充到D3、D4,自动计算对应公司的结果;
  3. 当新增Company4到任意列(比如J2),只需在C5输入"Company4",拖拽D4的公式到D5,就能自动计算Company4的最近12条记录平均值。

简化版(适合横向拖拽场景)

如果你的结果区域是和公司列横向对齐的(比如在G34计算Company1的平均,H34计算Company2),直接用你原来的公式横向拖拽即可,Excel会自动把G:G替换为H:HI:I

=AVERAGE(LOOKUP(LARGE(IF(ISNUMBER(G:G),ROW(G:G)),ROW(INDIRECT("1:"&MIN(12,COUNT(G:G))))),ROW(G:G),G:G))

这样新增Company4列后,只需把公式拖拽到对应列的单元格,就能自动计算。

内容的提问来源于stack exchange,提问作者Saverio

火山引擎 最新活动