如何导入工作表中所有非空白单元的数组(用于矩阵乘法)?

问题描述 投票:0回答:1

我有spreadsheet用于计算每顿进餐的营养数据。一张纸(“成分”)包含每种成分的营养数据矩阵。另一页(“食谱”)包含每顿饭每种成分的份量矩阵。在我的“膳食营养数据”表中,我想将这些矩阵相乘以获得每种配方的营养数据。

我可以针对当前拥有的一定数量的配料和配方执行此操作:=mmult(ingredients!B5:AF39,recipes!B2:G32),但是如果添加配方或配料,则希望它自动更新,因此我不希望对该公式进行硬编码。由于矩阵需要所有单元格中的值相乘并且由于约束NxP * PxM(行数x列数)必须成立,因此我需要将每张工作表的所有非空白单元格的数组导入MMULT()公式。

我当前的尝试=mmult(query(ingredients!B5:FN39,"select * where Col1 is not null",0),query(recipes!B2:G32,"select * where Col1 is not null",0))不起作用。它引发错误:“无法解析功能QUERY参数2的查询字符串:NO_COLUMN:Col1”。

我不知道应该用什么代替“ Col1”,或者我的公式是否是实现这些结果的有效方法。

我也尝试过filter()函数,但是它不能用于数组。

不要介意食谱的怪异...我是一名烹饪技能有限的大学生:)。

arrays google-sheets google-sheets-formula matrix-multiplication array-formulas
1个回答
0
投票

尝试:

=ARRAYFORMULA(MMULT(
 INDIRECT("ingredients!B5:"&ADDRESS(COUNTA(ingredients!A5:A)+4, 
 MAX(IF(ingredients!1:1="",,COLUMN(ingredients!1:1))))), 
 INDIRECT("recipes!B2:"&ADDRESS(COUNTA(recipes!A2:A)+1, 
 MAX(IF(recipes!1:1="",,COLUMN(recipes!1:1)))))))

0

© www.soinside.com 2019 - 2024. All rights reserved.