2009-04-26 31 views
0

我有两列,第一列将有一个对象的名称,第二列是它所属的。我想为每个人列出一张新表,列出他们分配给他们的内容。这里是一个例子:根据excel中的第二列创建子列表

dog F 
cat F 
bell S 
whistle 
bird F 

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

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列是一个隐藏的列,其行号是行号,C1是搜索参数(S或F)),然后=IFERROR(CELL("contents",INDIRECT(ADDRESS($D2,2,1,TRUE,"Items"))),""),但我除了将我的搜索数组的行索引更改为1+最后找到的项目(我还没有想出如何执行),我无法弄清楚如何继续搜索下一个项目。 我知道C++和C#,但之前从未在VBA中编码过,而且我严重依赖于MSDN,而且我知道没有专门用于Excel API的MSDN部分。

回答

1

实现没有任何VBA代码的列表的一种方法是使用高级过滤器。

在片1中输入的输入列表如下

alt text http://i41.tinypic.com/furvop.jpg

Sheet 2上输入过滤准则(此条件意味着包含F的变化列拥有)

alt text http://i41.tinypic.com/2kq1pk.jpg

和最后在sheet3上调用这样的高级过滤功能

alt text http://i41.tinypic.com/seuhyb.jpg

请务必选择复制到另一个位置

选择Sheet1中输入列表,该列表范围

选择Sheet2的过滤标准为准则的范围

,并在工作表Sheet 3作为选择的地方输出范围(复制到输入)

如果你更喜欢走excel VBA编程的路线,一个好的第一步是在excel中试用宏记录器(tools - macros - reco rd宏)

祝你好运!

+0

不知道如何让我插入的图像正确显示在这里,任何帮助非常感谢。 – 2009-04-26 08:49:57

+0

(现在可以,图像显示为他们应该) – 2009-04-26 09:08:40

1

在excel中用函数做这件事有一个好方法。

基本上你需要创建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总是与它找到的第一个匹配相匹配。

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