如何根据类别包含特定值的其他列表创建列表?

时间:2017-12-29 00:07:28

标签: excel excel-vba vba

所以为了简单起见,我想说我有一个包含3列和x行的表。 调用这3列;

  • 名称
  • 价格
  • 类型

名称下,有一个例如[Apple,Banana,Steak,Kiwi,Spagetti]。

然后在价格下,例如[2,1,5,2,3]

类型下会是[水果,水果,肉类,水果,面食]

现在我想在一个单独的地方创建一个列表,使用此列表作为基础,然后自动更新;

  • 获取名称,其中类型 =“水果”
  • 如果此列表中已存在该名称,请跳过该行并查看下一行(无重复项)
  • 用户在列表中间插入某些内容或附加到其中时,请将项目顺序更新为我们正在阅读的列表。 (保持秩序)
  • [可选]按顺序在列中打印这些内容,在其旁边的单元格中(下一列)对应价格

最后一个是可选的,因为我当然可以用价格替换名称,其中类型 =水果,并获得想要的结果。< / p>

但是我不知道该怎么做。目前我有;

=INDEX($A$2:$A$100,MATCH("Fruit", $C$2:$C$100,0),1)

然而,这只会返回数组中第一次出现的MATCH。

简单地这样做;

=INDEX(A2:A100,MATCH("GAME", C2:C100,0),1)

会给重复。

这些行中也没有提供附加的价格

我也一直在玩,试图创造自己的功能,但我真的很喜欢它,所以我不太确定我在做什么,甚至应该做什么。

TL; DR 我想根据第一组自动生成右侧的2组,如下图所示: enter image description here

1 个答案:

答案 0 :(得分:1)

在单元格E3中使用以下公式:

=IFERROR(INDEX($A$2:$A$10,SMALL(IF($C$2:$C$10=E$1,ROW($C$2:$C$10)-MIN(ROW($C$2:$C$10))+1),ROW()-2)),"")

作为数组公式输入(退出单元格编辑模式时按Ctrl+Shift+Enter)。 see here for formula explanation

根据需要向下运行多行,并将$10行限制更改为所需的行。

F3是一个简单的vlookup:=IFERROR(VLOOKUP(E3,$A:$B,2,0),"")

向下拖动并相应地复制到H列和I列。

enter image description here