Excel:使用两个输入从两个表中查找一个值

时间:2018-09-05 15:56:50

标签: excel

我正在为老板创建电子表格以查找运费。我有两个信息表:

1st Table

2nd Table

我们的想法是,我们应该能够放入邮政编码的第一部分,货盘的数量以及适当的费用。

例如,如果我要向BB发送5个托盘,则它应返回£188.06的价值,因为BB位于第2区,而第2区的5个托盘为£188.06。

不幸的是,我无法找到合适的功能来做到这一点。如果有人能够提供帮助,将不胜感激!

3 个答案:

答案 0 :(得分:1)

尝试一下... enter image description here

我找到了搜索二维数组here.的基本公式,并将其从max()值修改为完全匹配。

=INDEX(B15:F17,(SUMPRODUCT((B7:D9=A2)*ROW(B7:D9))-ROW(B7:D9)+1),B2)

sumproduct()从第一个表返回行(区域),该行与index()一起使用,并从第二个表返回装运的托盘数量。

祝你好运

答案 1 :(得分:1)

如果您希望以简单的方式使用它,则可以使用“区域”来获得一个非常简单的公式:

在我的设置中:

=INDEX(B11:P17,MAX((B2:R8=A21)*A2:A8),B21)

enter image description here 您需要调整范围以匹配您的数据。如果您的“区域”不是完全像示例中那样(<1,2,3,4 ...),则需要调整为:

=INDEX(B11:P17,MAX((B2:R8=A21)*ROW(A1:A7)),B21)

只需检查您的ROW()与“邮政编码”部分的高度相同,并从第一行开始。

如果多次发现邮政编码,它将始终占据最高的区域。如果根本没有邮政编码,它将进入1区。

  

这是数组公式,需要通过 ctrl + shift + enter 进行确认!

答案 2 :(得分:0)

建议

我建议将邮政编码区域的布局更改为:

Postcode    Zone
AA          1
AB          1
AC          1
...         ...
BA          2
BB          2
BC          2
...         ...

这样,使用INDEX-MATCH查找区域要容易得多。

解决方案-第1部分

但是,如果不可能(或者您只是不想这样做),我们可以将问题分解为两个简单的问题。

首先,我们需要从邮政编码前缀中检索区域。 要在没有数组公式的情况下执行此操作,我们可以使用SUMPRODUCT。

=SUMPRODUCT(LEN(<Postcode Range>)-LEN(<Postcode Range>)+<Zone Range>*(<Postcode Range>=<Postcode To Search>))

假设您的区域范围是A2:A8,并且您的邮政编码范围未超出Z列,而您要搜索的邮政编码在C1中,则为...

= SUMPRODUCT(LEN($ B $ 2:$ Z $ 8)-LEN($ B $ 2:$ Z $ 8)+ $ A $ 2:$ A $ 8 *($ B $ 2:$ Z $ 8 = $ C $ 1))

第1部分的解释

这是创建一个填充零的数组,该数组的大小与您的邮政编码范围相同:

LEN($B$2:$Z$8)-LEN($B$2:$Z$8)

LEN返回每个单元格中字符数的数组。我们不在乎字符的数量,因此我们只是从字符本身上取走了字符,这给我们留下了一个由零填充的正确大小的数组。

为此,我们然后添加区域的值。因此,阵列中的每个单元格都填充有相应的区域。

然后我们将该区域乘以:

($B$2:$Z$8=$C$1)

它将为零,除非邮政编码与我们要查找的邮政编码相同,在这种情况下,区域将乘以1。

解决方案-第2部分

现在我们已经找到了邮政编码所在的区域,使用INDEX-MATCH-MATCH可以很容易地在表2中查找成本:

=INDEX(<Cost Range>, MATCH(<Zone To Lookup (our formula from part1)>, <Zone Range>, 0), MATCH(<Pallet Qty To Lookup>, <Pallet Qty Range>,0))

因此,假设您在表2中的区域范围是A11:A17,最大托盘数量是15,要查找的托盘数量在D1中:

=INDEX($B$12:$P$18, MATCH(SUMPRODUCT(LEN($B$2:$Z$8)-LEN($B$2:$Z$8)+$A$2:$A$8*($B$2:$Z$8=$C$1)),$A$12:$A$18,0), MATCH($D$1,$B$11:$P$11,0))

第2部分的解释

INDEX的工作方式如下:

=INDEX(<Range>, <Column Number>, <Row Number>)

然后,我们使用MATCH函数来确定我们要查找的行和列,如下所示:

=MATCH(<Value To Match>, <Range To Search>, <Match Type>)

我们要查找完全匹配项,因此将“匹配类型”设置为零。

我希望这很清楚可以理解。如果没有,请告诉我,我将尝试进一步扩展。

这是最终解决方案的屏幕截图:

enter image description here