Excel一对多Table,查询每个ID的行数

Excel One-to-Many Table, Query Number of Rows Per ID

我在Excel中有一个一对多的table,设置如图。每个 rid (ID) 有很多样本;每个样本都有固定数量的属性(访问、访问类型等)。

我还设置了一个数据透视表 table 来可视化数据:

现在,我需要 filter/query 我的数据来查找具有所有 3 种访问类型的所有 ID:随机化和 30 周和交付。 (我可能还需要对每个 ID 及其依赖对象执行其他查询)

这可以在 Excel 中使用高级过滤器和数据透视表 table 实现吗?还是我需要编写 VBA 脚本来为我处理和组织这个? (使用 Excel 2010)

如果 VBA 脚本最好,我是否应该使用 Find 和 FindNext 来获取属于某个 ID 的所有样本?

提前致谢!

可以通过多种方式完成;一个是使用 COUNTIFS 函数测试每个条件,并指出其中是否有任何一个为 0。像这样(从第一个选项卡的单元格 H4 开始,向下拖动):

=countifs(A:A,A4,C:C,"randomization")*countifs(A:A,A4,C:C,"30-week")*countifs(A:A,A4,C:C,"delivery")

如果这些测试类型中的任何一个未与 A 列中的 rid 出现在同一行,则公式将简化为 0。

为了创建更清晰的结果,将函数与 0 进行比较,以显示并非所有 3 都存在的所有 rid;像这样:

=0=countifs(A:A,A4,C:C,"randomization")*countifs(A:A,A4,C:C,"30周")*countifs(A: A,A4,C:C,"delivery")

只要不是所有 3 个测试都存在,这将显示 TRUE。只测试唯一的 rids(会更干净一些;有很多方法可以创建没有重复的 rids 列表,但这也有效):

=if(iserror(match(A4,$A:A3,0)),0=countifs(A:A,A4,C:C,"randomization")*countifs(A:A,A4,C:C,"30-week")*countifs(A:A,A4,C:C,"delivery"),"")

只有在当前行上方的任何行中都没有找到与该特定 rid 匹配的情况下,这才会启动公式。

如果您只有 3 种访问类型,为什么不只执行 ID 计数,如果它是 3,则表示它完成了 3 种访问类型。像

=IF(COUNTIF($A$1:$A$100,A1)=3,"Done","Pending")

我不知道.. 如果您的访问类型超过 3 种,请告诉我们。