在 Excel 中,对从不同列开始的水平单元格区域进行乘法求和

在 Excel 中,对从不同列开始的水平单元格区域进行乘法求和

输入

我有两个带有输入的标签。

  • 第一张表显示了每种类型的对象在其前 24 个月内的价值演变。可将其视为一种可衡量的演变。

    新启动物体的演化

  • 第二张表针对每种类型的对象设置了每个日历月中有多少个对象“开始”。

    每个日历月的起始对象数

输出

对于每个日历月、每种类型的对象,我需要获取到那时为止已经开始的所有对象(该类型)的演变值的总和。

例如,对于 2021-05 和 C 型,该值为(编辑:第一个答案后更正)

= 'Starting objects'!B6 * 'Evolutions'!F6
+ 'Starting objects'!C6 * 'Evolutions'!E6
+ 'Starting objects'!D6 * 'Evolutions'!D6
+ 'Starting objects'!E6 * 'Evolutions'!C6
+ 'Starting objects'!F6 * 'Evolutions'!B6

因此,当我移动到后面的列时,公式变得越来越长。这是因为“起始对象”选项卡中的每个单个值在 24 列中都有贡献(因为演化持续 24 个月)。

这需要 SUMPRODUCT,但问题是要相乘的两个范围需要以相反的方向读取。“最旧”的对象需要观察期间的“最新”进化值。Excel 无法轻松恢复范围,因此我尝试使用临时选项卡以相反的顺序显示进化,但仍然找不到可以轻松拖动/复制的公式。

我怎样才能更好地实现这一目标?

答案1

=SUMPRODUCT('Evolutions'!$B6:F6,'Starting Objects'!$B6:F6)

答案2

我最终找到了以下解决方案(不需要隐藏/临时表):

=SUMPRODUCT(
  'Starting Objects'!$B4:F4;
  INDEX(
    'Evolutions'!$B4:F4;
    1;
    COUNTA('Evolutions'!$B4:F4) - COLUMN('Evolutions'!$B4:F4) + 1
  )
)

INDEX 构造反转了 Evolutions 表中的范围。

相关内容