我有一个需要在库存系统中创建的商品的父 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)))