在Excel中,返回列表中列出的项目列表超过三次

时间:2015-09-01 15:46:19

标签: excel excel-vba excel-formula vba

我在列中有一个类别列表。我需要在此列表上方的单元格中记录重复三次以上的任何类别(文本)。起初我以为我已经掌握了计数公式或其他类似的东西,但我很难过。在之前提出的问题中我找不到这样的东西。

有没有人对此有任何提示?我很感激。

示例:

D栏(假装它是垂直的): 红色 黄色 蓝色 黄色 绿色 红色 粉 橙子 红色 黄色 蓝色 绿色 黄色 绿色 红色

数据上方的单元格(或多个单元格)将列出"黄色"和" Red"因为这些文本字符串被发现超过三次。

3 个答案:

答案 0 :(得分:1)

您已使用Excel-VBA对此进行了标记,但尚未对VBA进行任何其他说明,因此我假设您需要基于公式的解决方案。

为了论证,我们假设您的列表位于单元格D2:D17中。

首先,我们将获取一个唯一值列表,并将其放在E列中,从单元格E2开始。我们需要在列表上方留一个空白单元格才能生效(否则我们将获得循环引用)。

在单元格E2中输入以下内容:

=INDEX(D2:D17,MATCH(0,COUNTIF($E$1:E1,D2:D17),0))

您必须按ctrl + shift + Enter才能使Excel将其解释为数组公式。 (有关数组公式的更多信息,请参阅this article)。

这应输出列表中的第一个唯一值。然后,您可以将其向下拖动到列表的长度,以允许显示所有可能的值。请注意,您还可以通过将原始列表复制到新列并使用Excel的内置重复删除工具(数据>删除重复项)来创建重复值列表。下一步将采用相同的方式。

F列中,我们将计算每个唯一值的出现次数。在单元格F2中,输入以下内容:

=COUNTIF(D2:D17,E2)

向下拖动复制,你现在应该有一个漂亮的双列表,列出原始列表中每个唯一值的出现次数。您可以根据需要过滤它。

答案 1 :(得分:0)

您可以使用这些公式显示相应的红色/黄色/绿色。

=IF(COUNTIF([Range],"=Yellow")>=3,"Yellow","")

=IF(COUNTIF([Range],"=Red")>=3,"Red","")

=IF(COUNTIF([Range],"=Green")>=3,"Green","")

所以要显示"黄色"如果D列中有超过3个黄色,您可以使用:

=IF(COUNTIF(D:D,"=Yellow")>=3,"Yellow","")

当然,只需显示计数:COUNTIF(D:D,"=Yellow")

答案 2 :(得分:0)

将包含重复项的列复制到新列[让我们说列E,从第2行开始]。转到数据功能区并删除重复项。在这个新的无重复列的右侧,放入以下公式[从F2开始并向下拖动]:

=IF(COUNTIF(D:D,E2)>3,MAX($F$1:F1)+1,"")

然后,根据您希望数据显示的方式,您可以选择一些选项 - 如果您可以阅读它,则无需进一步的工作。如果您希望它显示重复项的连续有序列表,那么只需使用INDEX / MATCH组合。例如,如果您希望重复列表从A1开始并向下,请执行以下操作:

=INDEX(E:E,MATCH(ROW(),F:F)

如果列表从第1行以外的任何地方开始[由于ROW()函数],这将不起作用。如果您希望列表从其他地方开始,则需要将索引增加1,然后引用该索引而不是ROW()。