如何在Google Sheets中用公式找到三种食物组合以满足指定营养值?
在Google Sheets中计算满足目标营养要求的食物分量
1. 先整理数据结构
把现有食物的营养数据按如下格式输入到表格中(以A1:D4为例):
| 食物名称 | 每100g蛋白质 | 每100g碳水 | 每100g脂肪 |
|---|---|---|---|
| chicken | 32 | 0 | 1 |
| avocado | 2 | 9 | 15 |
| rice | 2 | 26 | 0 |
目标营养值单独存放(比如F2:F4):
- F2=40(目标蛋白质)
- F3=40(目标碳水)
- F4=10(目标脂肪)
2. 用矩阵公式直接求解
这是基于线性方程组的解法,三种食物对应三个变量,刚好可以通过矩阵求逆计算出精确分量。
假设要在H2:H4输出三种食物的分量(单位:g),输入以下数组公式:
=MMULT(MINVERSE(B2:D4/100), F2:F4)
注:旧版Google Sheets需要按
Ctrl+Shift+Enter触发数组计算,新版直接回车即可。
计算结果:
- chicken分量≈113.05g
- avocado分量≈59.13g
- rice分量≈133.38g
验证:三种食物的营养素总和完全匹配目标值(误差为计算精度导致的微小偏差)。
3. 用规划求解(Solver)工具直观计算
如果对矩阵公式不熟悉,可使用Google Sheets的Solver插件:
- 点击菜单栏「扩展程序」→「添加扩展程序」,搜索安装Solver。
- 设置计算单元格:
- 用G2:G4存放三种食物的分量(初始值可填任意正数,比如100)。
- 计算实际营养值:
- H2(实际蛋白质):
=(B2*G2 + B3*G3 + B4*G4)/100 - H3(实际碳水):
=(C2*G2 + C3*G3 + C4*G4)/100 - H4(实际脂肪):
=(D2*G2 + D3*G3 + D4*G4)/100
- H2(实际蛋白质):
- 打开Solver配置:
- 目标:选择H2,设置为「值为」40
- 添加约束:
H3=40、H4=10 - 可变单元格:选择G2:G4
- 点击「求解」,即可自动得到符合要求的分量值。
注意事项
- 确保所有参与计算的单元格为数值格式,避免文本干扰计算。
- 如果目标营养无法通过现有食物组合实现,公式会返回错误,Solver也会提示无解。
内容的提问来源于stack exchange,提问作者Meggy Martin-Johnson
相关产品推荐
相关产品推荐

