根据其他工作表中的数据选择填充多个单元格

根据其他工作表中的数据选择填充多个单元格

我有关于邮政产品价格基于重量范围的数据。

数据

我希望能够在另一张表中从下拉列表中插入邮政产品,例如“PS”,然后在相邻的单元格中指定重量,例如 51 克,以便 Excel 自动根据数据中重量范围的价格在第三个单元格中填充该产品的价格(“fascia gr min - fascia gr max”)。有什么想法吗?

答案1

1] 在第 20 行添加新行,产品名称为“AR” B20,以便每个产品至少有 3 行。

2] G 和 H 列中填写的标准

3] 在“结果率”中I2,将公式复制下来:

=LOOKUP(H2,OFFSET($B$1,MATCH(G2,$B:$B,0)-1,1,COUNTIF(B:B,G2),3))

在此处输入图片描述

答案2

您可以通过FILTER()提取与产品匹配的表的子集(例如“PS”)并XLOOKUP()对其进行执行以找到所需的结果来实现它。

假设您的表格在 A1:E19(标题在第 1 行),您的产品输入在单元格 G2 中,您的重量输入在单元格 G3 中。

它将XLOOKUP()获取 G3 中的值(重量)并在 C 列的数据(fascia gr min)中查找该值。它将获取返回该值的索引值并在 E 列的数据(imponibile)中查找匹配的数据。但是,它不能直接使用主数据表,因为有多个“PS”项,并且它只会返回第一个匹配项。

您可以使用“OG”技术将多个值用作单个查找,以便它能够工作,但现在没有必要,而且那些技术无论如何在精确匹配的情况下效果最好。但事实并非如此。

因此,您需要FILTER()在公式中构建一个仅包含“PS”项的虚拟表。由于它只包含“PS”项,因此您不会在其中查找“PS”值,因为它们都是与“PS”相关的值。您将查找的内容在虚拟表中将是唯一的,即权重。因此XLOOKUP()可以很好地帮助您:

=XLOOKUP($G$3,FILTER(C2:C19,B2:B19=$G$2),FILTER(E2:E19,B2:B19=$G$2),,-1)

(不管你信不信,你实际上并不需要对数据表进行排序,因为XLOOKUP()当它使用数据子集时会有效地(不是真的,但最终结果就像它已经)在内部对其进行排序FILTER()。)

FILTER()出现两次,因为它首先提供用于匹配查找值的列以获取其索引(在本例中为相对上/下位置),然后第二次提供用于获取结果值的列。G2 中的值将所选行限制为仅产品(在本例中为 PS)。

您可能觉得可以使用一次,然后指定整个 E2:E19 范围作为结果,但这样做会失败。它必须与查找列的大小相匹配。因此,您需要两个FILTER()'。

否则,它就非常简单了XLOOKUP()。您给它一个在单元格 G3 中查找的值、查找范围和要查找并从中获取结果的结果列,以及最后一个细节:您想要找到所寻找的值,或者,如果没有完全匹配(通常不会有),那么下一个实际存在的较小值。因此,执行您提到的搜索,可能只搜索 62,它找不到 62,并查找下一个实际存在的较小值,找到 51 并返回 3.11 欧元。这是通过第五个参数(公式中使用的最后一个参数)完成的:末尾的“-1”。

您可以更巧妙(“更复杂”)地测试重量值,看看它是否超过了 D 列中列出的任何给定产品的最高重量。如果这意味着该商品必须完全不同地定价,或者因此可能是不同的产品,或者其他可能适用的情况,那么这可能很重要。(也许以产品的最高价值作为基础,并根据额外重量的一些成本增加更多。有这么多可能性。)

最后的想法是,这将适用于行数大于 0(无论是 1 还是 100)的产品。

(这一切的绝对关键是确保您呈现XLOOKUP()两个相同大小的虚拟列。任何时候您执行这样的操作并且失败,忘记这样做是最有可能导致失败的原因。)

相关内容