Excel膳食规划表:宏量营养素序列匹配优化及规则需求
问题:Excel膳食宏量营养素匹配优化
需求概述
我有一个用于计算每日膳食宏量营养素的Excel膳食规划表格,食物列表包含热量、蛋白质、碳水化合物、脂肪4种宏量营养素,希望找到与目标宏量序列最匹配的食物。
已实现基础的序列匹配逻辑,但还需满足两个额外规则:
- 优先匹配差异最大的宏量营养素,且食物热量不超过目标热量(或超幅不超过5);
2.(次要需求)支持按食物类别匹配搜索。
已实现的基础公式
- 单宏量匹配(仅支持单一宏量匹配,无法实现序列匹配):
=INDEX($A$2:$A$200;EQUIV(MIN(ABS($C$2:$C$200-$K$4));ABS($C$2:$C$200-$K$4);0)) - 序列差异值计算:
=SUM(IF($I$3:$L$3<>"";ABS($I$3:$L$3-$D2:$G2);0)) - 基础版最接近序列匹配(未整合额外规则):
=VLOOKUP(MIN(A2:A144);A2:B144;2;0)
示例表格数据
| CALCUL | 名称 | 类别 | 热量 | 蛋白质 | 碳水化合物 | 脂肪 | 热量 | 蛋白质 | 碳水化合物 | 脂肪 | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 46 | 橙子 | snack | 90 | 2 | 22 | 0 | 86.58 | 15.15 | 40.35 | -11.31 | |
| 50 | 乔巴尼无脂原味酸奶 | snack | 90 | 16 | 6 | 0 | |||||
| 50 | 梨 | snack | 96 | 0.63 | 25.66 | 0.2 | 类别 | snack | |||
| 54 | 以西结面包 | ingr | 80 | 4 | 15 | 0 | 建议公式 | =VLOOKUP(MIN(A2:A144),A2:B144,2,0) | |||
| 57 | 火鸡肉片 | ingr | 81 | 14.4 | 2.7 | 1.7 | |||||
| 58 | 煮球芽甘蓝 | veg | 88 | 3.95 | 11.06 | 4.43 | |||||
| 59 | 水煮巴沙鱼 | ingr | 90 | 17 | 0 | 2 |
注:可使用LET函数优化公式,原公式由法语翻译而来,函数名称已修正为英文版本
内容的提问来源于stack exchange,提问作者Newcook
相关产品推荐
相关产品推荐

