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

时间:2015-08-15 14:56:50

标签: excel excel-formula excel-2010 excel-2013

我有一个字符串列表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))

3 个答案:

答案 0 :(得分:4)

尽管我不想鼓励使用不稳定的OFFSET¹ function,但在这种情况下,这似乎是最有可能的候选人。

COUNTIF across rows

F2中的数组公式

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

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

¹ OFFSET被认为是一个易失性函数,只要工作簿中的任何内容发生更改,就会重新计算。

答案 1 :(得分:3)

在下图中

enter image description here

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

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

(使用Ctrl + Shift + Enter输入)并复制。

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

答案 2 :(得分:1)

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

.rotate {
  transform: rotate(2deg);
}

.norotate {
  transform: rotate(-2deg);
}

enter image description here