Google sheets 将配料数量数据安排在一行中,以便在其他位置检索
我想在GoogleSheets上实现一个包含不同数据行的表,其中两个字段是相关数组,我想知道实现它的最佳方法。有三种不同的表单,分别命名为Recipes、配料和菜肴。菜谱包含菜名和配料表,配料包含每种配料的营养信息,菜谱包含每道菜的实际营养信息 回复表我希望尽可能保持可读性和可视性:Google sheets 将配料数量数据安排在一行中,以便在其他位置检索,google-sheets,lookup,Google Sheets,Lookup,我想在GoogleSheets上实现一个包含不同数据行的表,其中两个字段是相关数组,我想知道实现它的最佳方法。有三种不同的表单,分别命名为Recipes、配料和菜肴。菜谱包含菜名和配料表,配料包含每种配料的营养信息,菜谱包含每道菜的实际营养信息 回复表我希望尽可能保持可读性和可视性: Name Time Ingredients Pasta 20min {150 spaghetti, 30 sauce, 5 marjoram, 20 cheese} 菜肴: Name Prot. Ca
Name Time Ingredients
Pasta 20min {150 spaghetti, 30 sauce, 5 marjoram, 20 cheese}
菜肴:
Name Prot. Carb. Fat KCal
Pasta x x x x
我想得到菜品的成分和数量数据,查找其营养成分,并在菜谱上加总数量。配料表如下所示:
Ingredient Prot. Carb. Fat KCal
Pasta x x x x
Marjoram x x x x
我知道如何从不同的表中获取行数据,如果配料和数量排列成两行,每一行在不同的列中,就像将菜中的总蛋白质相加一样:
=ArrayFormula(SUM(LOOKUP(F5:K5;Ingredients!$B$4:$B$1000;Ingredients!$D$4:$D$1000)*((F6:K6)/100)))/E5
我的问题是,我想在一行中列出配料清单和用量,如{150意大利面、30份酱汁、5份马郁兰、20份奶酪}。我想让它一目了然。我试图使用数组,但不知道如何使其工作
如何最好地将数据安排在一行中,并能够使用它查找其他工作表上的数据?理想情况下,您可以以结构化形式输入每个配方的数据,例如成分数量表,然后通过使用
连接或类似方法从数据中构建文本字符串,以可读形式显示数据。一般的想法是结构化数据应该是信息的来源,而显示给人类消费的东西就是从中衍生出来的
但如果你坚持使用字符串作为信息来源,比如“150意大利面,30沙司,5马乔兰,20奶酪”,这里有一种方法可以从中计算营养成分
假设A:B是一个成分营养含量表,例如
Ingredient Protein
spaghetti 2
sauce 4
eggs 10
cheese 6
marjoram 2
E2单元有“150个意大利面,30份酱汁,5份马郁兰酒,20份奶酪”。以下公式计算此配方中的蛋白质含量:
=sumproduct(
vlookup(split(regexreplace(E2, "[\d\W]+", " "), " "), A:B, 2, 0),
split(regexreplace(E2, "\D+", " "), " ")
)
说明:
- 第一个拆分regexreplace组合从配方中提取所有单词,方法是将数字和标点符号替换为空格,然后按空格拆分。我们得到了四个单词的数组:意大利面条、沙司、马郁兰、奶酪
- 然后,vlookup查找蛋白质含量(范围A:B中的第2列)。如果你也有脂肪、卡路里、碳水化合物等,那么查找范围将是A:E,使用的列将是2、3、4、5中的一个李>
- 第二个分离的regexreplace提取了大量的成分,它去除了配方中所有非数字的成分
sumproduct
将这两个数组的乘积相加,计算总蛋白质含量
由于基于正则表达式的文本解析,所有这些都是脆弱的,如果字符串偏离预期的格式,这些都会中断;例如,如果食谱要求“1 1/2汤匙糖”。在这种情况下,请参见第一段