如何在COUNTIF中定义非连续范围

17
   A    B   C

1  Β        Β
2  Β        Β
3  Α        Α
4  Α        Α
5  Β        Β
6  Α        Α
7  Α        B
8  Β        Β
9  Β        Β
10 Α        Α
11 Β        A
12 Α        Α
13 Α        Α
14 Β        Β
15 Α        Α
16 Β    ??  

我想在单元格B16中计算单元格C1:C15 A16 中有多少个 "B"(即A16中的值)。然后使用某些函数将"A"或"B"放入单元格C16。我该如何在COUNTIF中给出这样一个范围?同样的公式必须用于B列中的每个单元格。

5个回答

24

这里是B16单元格的公式: =SUM(COUNTIF(INDIRECT({"C1:C15","A16"}),"B"))


不错 - 我不知道你可以在 INDIRECT 中使用 { } 来声明非连续范围。 - JMax
2
你可以使用“INDIRECT”创建一个范围数组,但是只能传递字符串。因此,您需要手动更新每个单元格的范围。或者,您可以编写一个VBA函数来完成这个任务。 - Rachel Hettinger

19

作为复制和粘贴的替代方案,你可以这样做:

=COUNTIF($C$1:$C$15,"B") + COUNTIF(A16,"B")

1
虽然我的回答可能是介绍人们使用“INDIRECT”函数的工具,但这个答案非常简单明了。 - Rachel Hettinger
1
虽然对于许多不连续的单元格来说有点繁琐,但它具有巨大的优势,即在删除行或列时自动调整单元格。非常感谢。 - Bob Jarvis - Слава Україні

1
你还可以声明一个非连续区域的命名区域,但是在声明范围时必须使用INDIRECT函数。否则,它会像普通的非连续区域一样失败。
声明范围(“Range1”)应该使“适用于”字段读取:
=INDIRECT({"A1:B2","C4:F17"})

或者使用其他命名范围:

=INDIRECT({"Table1[Column1]","Table2[Column3]","Table4[Column2]")

然后你可以像这样引用它:

=COUNTIF(Range1,"=Yes")

1
就记录而言,如果我理解正确,您想要计算单元格A16的值。但是,如果您使用这样的公式:
=COUNTIF(C1:C15,A16)

你知道你将在单元格 A16 中拥有值(这里是 B),对吧?

所以你想要获取的值是:

=COUNTIF(C1:C15,A16) + 1

我哪里理解错了?


不,我不这样做。它可以是A或B。所以我不能使用“+1”。 - gd047
如果您在公式中使用变量(在此情况下为“ A16”),则不需要这样做。 - JMax
好的,我应该说实际上我想要一个公式来计算abs(alphas-betas)。 - gd047

0

这个也可以!=SUM(COUNTIF(INDIRECT({"J18","J45","J78","J112","J140","J173","J205"}),">1"))


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接