Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Vlookup从多个标准显示最接近的答案_Arrays_Excel_Excel Formula_Formula - Fatal编程技术网

Arrays Vlookup从多个标准显示最接近的答案

Arrays Vlookup从多个标准显示最接近的答案,arrays,excel,excel-formula,formula,Arrays,Excel,Excel Formula,Formula,我希望有人能帮我。我撞到了一堵坚固的墙 我有一个包含产品信息的表,我正在构建一个计算器,它应该根据表中的设置标准给出一些选项。我只是无法通过代码。问我如何在这里做一个vlookup,我感到很尴尬。但基本上,我有一个vlookup,它取决于多个标准,对于calc来说,根据这个标准计算出最接近的匹配项(如果适用) Criteria 1 = Product Criteria 2 = Type Criteria 3 = Height Criteria 4 = Min 我在表中创建了一个搜索键来连

我希望有人能帮我。我撞到了一堵坚固的墙

我有一个包含产品信息的表,我正在构建一个计算器,它应该根据表中的设置标准给出一些选项。我只是无法通过代码。问我如何在这里做一个vlookup,我感到很尴尬。但基本上,我有一个vlookup,它取决于多个标准,对于calc来说,根据这个标准计算出最接近的匹配项(如果适用)

Criteria 1 = Product

Criteria 2 = Type

Criteria 3 = Height

Criteria 4 = Min
我在表中创建了一个搜索键来连接所有这些列,然后执行了一个vlookup,它是
=vlookup(Criteria1&Criteria2&Criteria3&Criteria4,表数据,所需代码)
,但这似乎并没有给我结果,它要么给出了一个错误,要么给出了不正确的产品。下面是我的数据和我希望完成的计算。有人能帮忙吗


下面是一个在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)
将参数连接起来,并在表中搜索这些参数连接的匹配项(如果键由相同的参数组成,则可以针对键列执行此操作。)

带有一些测试数据的总体公式(使用一个估算数字):

上面输入的组合公式Memory是一个数组公式,因此使用Ctrl+Shift+Enter输入。您可以将范围从整列减少到仅包含数据的行


数据数据:

我并没有把图片上的所有内容都打出来,所以这里有一个快速的n


我尝试使用QHarr的解决方案,但它无法处理所有行

我的解决办法是:

  • 添加包含以下内容的列:
  • =如果(E2<$K$2,E2,0)并复制所有行

  • 在L5中创建公式:
  • {=索引(F2:F19,匹配($K$1和K5&$J$5和索引(E2:E19,匹配(最大值)(SI(B2:B19=$K$1,1,0)*如果(C2:C19=K5,1,0)*如果(D2:D19=$J$5,1,0)*G2:G19,0),E2:B19和C2:C19和D2:D19和E2:E19,0))}

  • 将公式复制到L6和L7

  • 最初将此标记为已回答,最初它确实有效,但随着我添加更多产品,它开始失败。我确实设法(经过多次尝试和错误后)找到了一个简单的解决方案(
    {=INDEX(Calc!$I$2:$I$189,MATCH(Output!$H$7,IF(Calc!$B$2:$B$189=Output!A12,Calc!$H$2:$H$189),1))

    请在代码标记之间插入代码/数据,使用一个表生成器来帮助格式化,而不是作为图像。另外,最接近的匹配是什么?在这种情况下,组合键不太可能有帮助。它是最接近的最小值吗?最小值下最接近的匹配。。。。因此,如果我将Product1放入搜索中,我只希望代码查看表中的Product1,然后我希望它查看下一个高度,因此在calc 300的顶部,它将在表中查看Product1和高度300,然后我想让它看看类型,然后将表格缩小到Product1高度300和calc顶行的类型11,然后得到与最小值1000最接近的匹配,在表格中是Product1,类型11,高度300,最小值是803,代码是P130180G。我希望这是有意义的,因为它对我们帮助很大。对不起,这张图片,我看不到如何附加表格。没关系。必须有人告诉我!我用这个。您可以将表格从excel粘贴到其中(有一个下拉选项)。然后复制到剪贴板,粘贴问题。高亮显示它,然后按Ctrl+K在代码标记之间切换,谢谢,我注意到当我添加越来越多的产品时,它开始失败。我通过以下“{=INDEX(Calc!$I$2:$I$189,MATCH(Output!$H$7,IF(Calc!$B$2:$B$189=Output!A12,Calc!$H$2:$H$189),1))”解决了这个问题。请在中提供一个包含数据的工作簿,如果出现问题,我将更新:-)
    =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))