Google sheets Google工作表中扩展行和列的多个标量乘积

Google sheets Google工作表中扩展行和列的多个标量乘积,google-sheets,google-sheets-formula,array-formulas,Google Sheets,Google Sheets Formula,Array Formulas,我想计算B1:1行与B2:2行、B3:3行……的标量积,并将结果放入A列。我的数据可以有空单元格,并且在列和行中都在增长,因此我想找到一种解决方案,不需要手动将公式应用于每个新的数据条目 我当前的解决方案在数学上符合我的要求。但是,只要工作表中的行数大于列数,则只计算列数的结果,其余行保持为空 =ARRAYFORMULA(TRANSPOSE(MMULT(N(B1:1), N(TRANSPOSE(INDIRECT(CELL("address", B2)&":&

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

我当前的解决方案在数学上符合我的要求。但是,只要工作表中的行数大于列数,则只计算列数的结果,其余行保持为空

=ARRAYFORMULA(TRANSPOSE(MMULT(N(B1:1), N(TRANSPOSE(INDIRECT(CELL("address", B2)&":"&COLUMNS(2:2)))))))
现在添加空列是可行的,但是我如何解决这个问题而不必一直添加额外的列呢

你说过

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

在您的公式中使用
max(数组公式(如果(B:B“”,第(B:B)行),”)

而不是
列(2:2)

您的新公式将

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

这几乎完全解决了问题!这是否也可以扩展到解决以下情况:根据数据,最后一行条目可能只存在于B以外的列中(例如,B中为空,但C、D中为值……?“这几乎完全解决了问题”?我认为它完全解决了:)关于:“这是否可以扩展到也解决…”是的,它可以。无论如何,试试看。如果仍有麻烦,请告诉我们。另外,请记住,当一个答案解决了你的问题时,它甚至是其他人也能从中受益。是的,它确实解决了问题。除了列B的最后一行为空且另一列有值的情况。你介意分享一下这个问题的解决方案吗?”“你自己试过解决吗?我回答的第二张图片为你指明了方向。无论如何。将
max(数组形式)替换为
max(数组形式)(if(B:B)”,第(B:B)行
如中所述,我知道我们的误解是:在您之前的评论中,它会将检查条目的行从B更改为D。然而,我试图解决的是,事先不知道条目稀疏的位置。通过您的输入,我能够找出它。替换为:
max(arrayformula)(if(INDIRECT)(CELL(“地址”,B2)和“&行(B:B))”,行(间接(单元格(“地址”,B2)和“:”&行(B:B)),”)
执行此任务。请参阅。
=max(arrayformula(if(B:B<>"",row(B:B),""))) 
=ARRAYFORMULA(TRANSPOSE(MMULT(N(B1:1), 
                         N(TRANSPOSE(INDIRECT(CELL("address", B2)&":"&max(arrayformula(
                            if(INDIRECT(CELL("address", B2)&":"&ROWS(B:B))<>"", 
                                  row(INDIRECT(CELL("address", B2)&":"&ROWS(B:B))),"")))))))))