首页 > 解决方案 > Excel:在多列中查找具有重复项的多个值

问题描述

我正在尝试链接多个列表并显示所有值。包括重复。

我的工作表有 11 列中的数据。一列是产品(可以出现多次),其余是商店(销售产品,没有商店销售相同的产品)。这里有一个小例子:

例子

我使用以下公式制作了一个辅助列(A)=B2&COUNTIF($B$2:B2,B2):。帮助列计算产品在产品列 (B) 中出现的次数。我认为这是需要的。

我已经设法使用=VLOOKUP($C$2&ROWS($L$1:L1),$A$2:$C$11,2,0)这样的方式对数据进行了排序:

结果

结果尝试

但我想对每个商店的单个列中的数据进行排序,如下所示:

期望的结果

期望的结果

,无需每 2-3 行更改一次公式,因为有些商店有 30 种左右的产品。

这可以通过公式或 VBA 实现吗?

我希望将结果放在一栏中:

希望这足够清楚。谢谢

稍后编辑:
也许这有助于理解我想要获得的东西。

第 1 列助手我添加它来计算产品在第 2 列中出现的次数。
我想获得一个单独的列,它显示第 3 列(store1)中的项目 x 它们在产品列中出现的次数。

在上面的示例中,Store1 的产品“Hansa”在产品列中出现了 4 次,因此它应该在单独的列中出现 4 次,之后产品“Korek”在产品列中出现 1 次,因此它应该在“Hansa”下的单独列等等。所以基本上我想将第三列与第二列进行比较,并在第三个 x 次中显示它们出现在不同列中的第二个值。

标签: excelvbaexcel-formula

解决方案


此公式F1用作辅助单元格,用于计算产品列表中的匹配项。

输入FormulaArray这个F1

=SUM( IF( ISERROR( MATCH( $B$2:$B$11, $C$2:$C$6, 0 ) ), 0, 1 ) )

在此处输入图像描述

在 中输入此公式E2:E11

= IFERROR( INDEX( $C$2:$C$6,
AGGREGATE( 15, 6,
MATCH( $B$2:$B$11, $C$2:$C$6, 0 ),
ROWS( E$2:E2 ) ) ),
IFERROR( INDEX( $C$2:$C$6,
AGGREGATE( 15, 6,
ROW(E:E) / ISERROR( MATCH( $C$2:$C$6, $B$2:$B$11, 0 ) ),
ROWS( E$2:E2 ) - $F$1 ) ) & "-", "" ) )

在此处输入图像描述

请注意,A不需要辅助列。


推荐阅读