我想在Google表格上实施一个表格,其中包含不同数据的行,其中两个字段是相关数组,我想知道实现它的最佳方式。有三种不同的纸张,名为Recipies,Ingredients and Dishes。 Recipies包含菜肴的名称和成分列表,Ingredients包含每种成分的营养信息,Dishes包含每份食物的实际营养信息。
Recipies Sheet我希望尽可能保持可读性和可视性:
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奶酪}。我想让它一目了然。我试图使用数组,但不知道如何使其工作。
如何才能最好地将数据排列在一行中,并能够使用它来查找其他工作表上的数据?
答案 0 :(得分:1)
理想情况下,您可以使用结构形式输入每个配方的数据,例如成分数量表,然后通过使用{{从数据构建文本字符串,以可读形式显示它1}}或类似的。一般的想法是,结构化数据应该是信息的来源,而为人类消费而展示的东西则源于此。
但如果你坚持使用" 150意大利面,30酱,5马郁兰,20奶酪和#34;作为信息来源,这里有一种计算营养成分的方法。
假设A:B是一种成分 - 营养成分表,例如
join
和细胞E2有" 150意大利面,30酱,5马郁兰,20奶酪"。以下公式计算了该配方中的蛋白质含量:
Ingredient Protein
spaghetti 2
sauce 4
eggs 10
cheese 6
marjoram 2
说明:
=sumproduct(
vlookup(split(regexreplace(E2, "[\d\W]+", " "), " "), A:B, 2, 0),
split(regexreplace(E2, "\D+", " "), " ")
)
添加了这两个数组的产品,计算总蛋白含量。由于基于正则表达式的文本解析,所有这些都很脆弱,如果字符串偏离预期的格式,它将会中断;例如,如果食谱要求" 1 1/2汤匙糖"。在这种情况下,请参阅第一段。