0

我有两列,第一列将有一个对象的名称,第二列是它属于谁。我希望每个人都有一张新表来列出他们分配给他们的内容。这是一个例子:

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

和斯科特是一样的。

我目前的思路是=VLOOKUP($C$1,Items!A2:C1000,3)在 D 中的隐藏列中使用来告诉我我的数据在哪一行,(其中 Items 上的 C 列是隐藏列,其中包含行的行号,C1 是搜索参数(S 或F)),然后=IFERROR(CELL("contents",INDIRECT(ADDRESS($D2,2,1,TRUE,"Items"))),""),但是我除了将搜索数组的行索引更改为 1+ 最后找到的项目(我还没有弄清楚如何做)之外,我无法弄清楚如何继续搜索下一个项目。我知道 C++ 和 C#,但以前从未在 VBA 中编写过代码,而且我严重依赖 MSDN,据我所知,没有专门针对 Excel API 的 MSDN 部分。

4

2 回答 2

1

在没有任何 VBA 代码的情况下实现您正在寻找的列表的一种方法是使用高级过滤器。

在工作表 1 上,输入列表输入如下

替代文字

在 sheet2 上输入过滤条件(此条件表示在“拥有者”列中包含 F)

替代文字

最后在 sheet3 上,像这样调用高级过滤器功能

替代文字

确保选择复制到另一个位置

选择 sheet1 输入列表作为列表范围

选择 sheet2 过滤条件作为条件范围

并选择 sheet3 中的某处作为输出范围(复制到条目)

如果您更喜欢走 excel VBA 编程的路线,那么好的第一步是在 excel 中试用宏记录器(工具 - 宏 - 录制宏)

祝你好运!

于 2009-04-26T08:42:56.950 回答
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 会更容易。

于 2009-05-28T08:01:47.943 回答