根据多个条件查找多个结果

根据多个条件查找多个结果

我有一个需要在库存系统中创建的商品的父 SKU 列表。此列表已与我们要销售的 165 种产品进行了精细匹配。但是,这 165 种 SKU 中的每一个都有 2 到 8 个不同颜色、尺寸等的子 SKU。这些 SKU 存储在不同的工作表中,混杂在大约 2500 个商品中。这些是我需要输入到库存系统中的 SKU。

它看起来是这样的。

第 1 页仅显示 SKU:

A
1
2
3
4

工作表 2 包含所有子 SKU,父 SKU 在 B 列中。并非所有父 SKU 都具有相同数量的子 SKU:

  A        B
1BLKM      1
1BLKL      1
1BLUM      1
2BLKM      2
2BLKL      2
2BLUM      2
2ORAM      2
3BLKM      3
3BLUM      3

我想查找已微调的父 SKU 列表的所有子 SKU。父 SKU 作为子 SKU 工作表的一列包含在内。我需要查找父 SKU 的所有匹配项,然后继续向下移动父 SKU 列表,直到找到所有 165 个父项的所有匹配项。

似乎我尝试的每个函数都不能使用数组作为输入。有没有办法使用 Lookup 或索引、匹配、行等的组合来做到这一点?有没有办法不使用 VBA 来做到这一点?或者甚至可能是一个带有我可以理解的代码的 VBA 解决方案,因为我以前没有使用过 VBA。

答案1

为了在一列中获取所有匹配的子 SKU,您可以在列的第 1 行中使用以下数组公式,并根据需要向下填充。

=IFERROR(INDEX(Sheet2!$A$1:$A$11,SMALL(IF(ISERROR(MATCH(Sheet2!$B$1:$B$11,Sheet1!$A$1:$A$5,0)),2000000,ROW(Sheet2!$B$1:$B$11)),ROW())),"")

要将其设为数组公式,必须按Ctrl+ Shift+输入它Enter

这是我今天用这种公式回答的第二个问题,所以我只链接到我的其他答案有关此公式如何工作的解释(请参阅编辑部分)。

答案2

这是一个非数组解决方案。根据您的 Sheet2 布局,其中数据全部按 B 列排序,因此类似的项目列在一起,这个小公式就可以解决问题。在 B1 中输入第一个公式,然后根据需要向下和向右复制。

=IF(COUNTIF(Sheet2!$B:$B, $A1)<COLUMN(A1), "", INDEX(Sheet2!$A:$A, MATCH($A1, Sheet2!$B:$B, 0)+(COLUMN(A1)-1)))

在此处输入图片描述

相关内容