扩展Google表格中行和列的多个标量产品 编辑

问题描述

我想计算B1:1行与B2:2,B3:3,...的标量积,并将结果放在A列中。我的数据可以有空单元格,并且都在列中增长和行,因此,我想找到一个不需要手动将公式应用于每个新数据条目的解决方案。

我当前的解决方案在数学上可以满足我的要求。但是,只要工作表中的行数多于列数,则仅针对列数计算结果,其余行保持空白。

=ARRAYFORMULA(TRANSPOSE(MMULT(N(B1:1),N(TRANSPOSE(INDIRECT(CELL("address",B2)&":"&COLUMNS(2:2)))))))

现在可以添加空列,但是如何解决这个问题而又不必一直添加额外的列?

Example sheet

Result is calculated four times because there are 4 columns from B to E

解决方法

你说

我想计算B1:1行与B2:2,B3:3,...的标量积,并将结果放在A列中。...而不必一直添加额外的列?

在公式中使用 max(arrayformula(if(B:B<>"",row(B:B),"")))
而不是COLUMNS(2:2)

您的新公式

=ARRAYFORMULA(TRANSPOSE(MMULT(N(B1:1),N(TRANSPOSE(INDIRECT(CELL("address",B2)&":"&max(arrayformula(if(B:B<>"","")))))))))

enter image description here


有用的代码段

如何查找列中的最后一个非空行号

=max(arrayformula(if(B:B<>"",""))) 

给出{strong>列B中最后一个非空行的行号

enter image description here


编辑

请使用以下公式进行MMULT 任意数量的行或列 仅基于2个单元格B1B2
(更改后的公式(由mz1000中的this comment给出)

=ARRAYFORMULA(TRANSPOSE(MMULT(N(B1:1),B2)&":"&max(arrayformula(
                            if(INDIRECT(CELL("address",B2)&":"&ROWS(B:B))<>"",row(INDIRECT(CELL("address",B2)&":"&ROWS(B:B))),"")))))))))