Excel - 如何计算范围内(即各列)包含特定字符串的行数?

Excel - How to count number of rows in range (i.e. various columns) that contain certain string?

我有一个字符串列表 A,我想看看每个字符串在范围 B 中代表了多少行。我的数据看起来像这样:

列表 A:

   E
1 aaa
2 bbb
3 ccc

范围 B:

   A      B      C
1 aaa    ---    ---
2 bbb    ccc    bbb
3 aaa    ---    ---

我想要的结果是,在列表 A 中,"aaa" 会告诉我 2,"bbb" 1 和 "ccc" 1。一直在尝试使用在数组公式下方,但它似乎不起作用:

=SUM(IF(COUNTIF(Range B,List A($A1)>0,1,0))

尽管我很想避免鼓励使用 volatile OFFSET¹ function,但它似乎是这种情况下最有可能的候选者。

F2中的数组公式为,

=SUM(SIGN(COUNTIF(OFFSET(A, ROW(:)-1, 0, 1, 3), E2)))

数组公式需要用Ctrl+Shift+Enter↵完成。一旦正确输入第一个单元格,就可以像任何其他公式一样向下或向右填充或复制它们。

¹OFFSET 被认为是一个可变函数,只要工作簿中的任何内容发生变化就会重新计算。

下图中

B 是范围 A1:C4 的名称。在 F1 中(在列表中的第一个元素旁边 A),输入:

=SUM(IF(COUNTIF(OFFSET(B,ROW(B)-1,0,1),E1)>0,1,0)

(Ctrl + Shift + Enter 输入)并向下复制。

它应该足够灵活以处理 B 增长到更多的行和列。

这里已经发布了一些很好的答案,但我想我会再添加一个。如果您正在处理大型数据集,这个公式在速度方面可能会派上用场。您可以将公式放在 F1 中(见下图)并向下复制。输入公式时需要使用 CTRL + SHIFT + ENTER

=SUM(IF(FREQUENCY(IF(E1=$A:$C,ROW($A:$C)),IF(E1=$A:$C,ROW($A:$C)))>0,1))