在filter处于活动状态时,Excel表格列中的唯一值的数量

在Excel表中,可以通过单击标题旁边的箭头来过滤每个列的数据。 单击此箭头时,Excel将显示列中存在的唯一值的列表,每个值旁边有一个checkbox。 在其他列上应用筛选器时,此列表会更改。 如果因应用的filter而异,则列内唯一值的数量不同。

我想dynamic计算每列中唯一值的数量,并将其存储在表头之上的一行中。 当不同的filter应用在表上时,这些值应该更新,就像Excel在点击标题的箭头时更新列表一样。

到目前为止,

  • 在这里find的选项{=sum(1/countif(Tab[Column1] , Tab[Column1])} (通过按Ctrl-Shit-Enter )给出了唯一值的数量,但是这不会考虑潜在的filter桌子。

  • 在菜单表工具>devise中,我可以添加一个表格行,并使用subtotalfunction来获得考虑到过滤的结果,但这主要是针对简单的操作,如sum 。 我无法计算如何统计唯一值的数量。

  • 像结构化的引用Tab[[#FilteredData],[Column1]]可以做的伎俩。

假如说:

1)您正在使用公式中的表名称

2)你的表名为“Tab”

3)表中的第一列被命名为“Column1”

4)空单元同样被认为是唯一的值

然后将这个数组公式放置在与包含“Column1”的列相同的列中的某个单元格中,最好这样做是在表本身的外部:

=SUM(IF(FREQUENCY(IF(SUBTOTAL(3,OFFSET(INDEX(Tab,1,COLUMNS($A:A)),ROW(Tab[Column1])-MIN(ROW(Tab[Column1])),)),MATCH(INDEX(Tab,,COLUMNS($A:A)),INDEX(Tab,,COLUMNS($A:A)),0)),ROW(Tab[Column1])-MIN(ROW(Tab[Column1]))+1),1))

根据需要复制到右侧。

问候

**数组公式不是以与“标准”公式相同的方式input的。 按住CTRL键和SHIFT键,而不是按下ENTER键,然后按ENTER键。 如果你做得对,你会注意到Excel在公式周围放置了大括号(尽pipe不要试图自己手动插入这些)。