2011-12-07 45 views
13
A B C 

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

限定非连续范围在细胞B16欲计算有多少“B” S(在A16中的值)在细胞C1:C15 A16。然后使用一些函数,我将在单元格C16中放置一个“A”或“B”。我如何在COUNTIF中提供这样的范围?同样的公式必须在B列用于每个细胞如何COUNTIF

回答

15

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

+0

不错的一个 - 我不知道你可以用'INDIRECT'中的'{}'来声明非连续范围 – JMax

+1

T他的公式似乎有用,但我无法复制它。 –

+0

你可以使用''INDIRECT''来创建一个范围数组,但是你只能传递它的字符串。因此您需要手动更新每个单元格的范围。或者,您可以编写一个VBA函数来执行此操作。 –

0

为了记录在案,如果我没有理解好,你想从小区A16计数的值。但是,如果你做这样一个公式:

=COUNTIF(C1:C15,A16) 

知道你会在细胞A16有值(这里B),不是吗?

所以,你想要得到的值是:

=COUNTIF(C1:C15,A16) + 1 

我是怎么误解?

+0

不,我不知道。它可以是A或B,所以我不能使用“+1” –

+0

如果你在公式中使用var(在这种情况下为'A16') – JMax

+0

好吧,我应该说,实际上我想要一个计算绝对公式(alphas-beta) –

13

至于那些用于复制和粘贴工作的替代,你可以这样做:

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

尽管我的答案可能是向人们介绍'INDIRECT'函数的工具,但这个答案非常简单。 –

+0

虽然对于许多不连续的单元格有点麻烦,但它具有在删除行或列时自动调整单元格的巨大优势。非常感谢。 –

1

您也可以申报非连续范围的命名范围,但你必须在声明范围内使用INDIRECT函数。否则,它将会像一个正常的,不连续的范围一样失败。

声明的范围( “范围1”)应该有 “适用于” 现场阅读:

=INDIRECT({"A1:B2","C4:F17"}) 

或使用其他的命名范围:

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

然后,你可以参考它想:

=COUNTIF(Range1,"=Yes")