我希望有人能帮助我。我碰到了坚固的墙。
我有一个包含产品信息的表,并且我正在构建一个计算器,该计算器应根据表中的设置标准吐出许多选项。我无法仅通过编写代码。我感到很尴尬,询问在这里如何进行vlookup。但基本上,我有一个vlookup,它取决于多个条件,并且calc会根据此条件找出最接近的匹配项(如果适用)。
Criteria 1 = Product
Criteria 2 = Type
Criteria 3 = Height
Criteria 4 = Min
我已经在表中创建了一个搜索键来连接所有这些列,然后执行了vlookup,这是=Vlookup(Criteria1 & Criteria2 & Criteria3 & Criteria4, Table Data, Code Required)
,但这似乎没有给我结果,它咳嗽了一个错误或者不正确的产品。以下是我希望完成的数据和计算。有人可以帮忙吗?
答案 0 :(得分:2)
这里是一个示例,用于寻找最接近Min的匹配项。它演示了原理,因此您可以进行扩展。
最接近的匹配公式部分是:
MATCH(MIN(ABS(E2:E4-K2)),ABS(E2:E4-K2),0))
E列表示最小值的输入,K2表示目标最小值。这是使用 Ctrl + Shift + Enter 输入的数组公式。您将调整E2:E4的范围。
多个条件部分正在使用:
=MATCH(lookup_value_1&lookup_value_2&lookup_value_3, lookup_array_1&lookup_array_2&lookup_array_3, match_type)
要集中显示参数并在表中搜索这些参数的并列匹配项(如果键由相同的参数组成,则可以针对键列执行此操作)。
带有一些测试数据的总体公式(使用一个估计数字):
=INDEX(F:F,MATCH(K1&K5&J5&INDEX(E2:E4,MATCH(MIN(ABS(E2:E4-K2)),ABS(E2:E4-K2),0)),B:B&C:C&D:D&E:E,0))
上面输入的组合公式请记住是一个数组公式,因此使用 Ctrl + Shift + Enter 输入。您可以将整个列的范围缩小到仅包含数据的行。
数据数据:
我没有从图片中输入所有内容,所以这里有一个快速的n脏
答案 1 :(得分:0)
我尝试使用QHarr的解决方案,但不适用于所有行。
我的解决方法是:
= IF(E2 <$ K $ 2,E2,0)并复制所有行
{= INDEX(F2:F19,MATCH($ K $ 1&K5&$ J $ 5&INDEX(E2:E19,MATCH(MAX(SI(B2:B19 = $ K $ 1,1,0))* IF(C2:C19 = K5,1,0)* IF(D2:D19 = $ J $ 5,1,0)* G2:G19,0),E2:E19,0)),B2:B19&C2:C19&D2:D19&E2:E19,0) )}
答案 2 :(得分:0)
最初将其标记为已回答,并且起初确实起作用,但是随着我添加更多产品,它开始失败。经过反复尝试,我确实设法找到了一个简单的解决方案{=INDEX(Calc!$I$2:$I$189,MATCH(Output!$H$7,IF(Calc!$B$2:$B$189=Output!A12,Calc!$H$2:$H$189),1))}