一次使用COUNTIFS获取一系列值

时间:2014-12-07 12:13:29

标签: excel count indexing excel-formula worksheet-function

比COUNTIFS更高一步,我提出了一个挑战,即编写一个没有VBA代码的公式。基本数据由1000行组成:

  • A列:值为1到3的行
  • B列:值为1到250的行。

为此,我们假设,我们正在查看A列中值为“1”的所有单元格,它们在B列中符合值“5”。要查找所有匹配项,我们将使用COUNTIFS命令。

1   1
2   5
1   5
1   7
1   10
3   45
2   12
1   2
2   1

=COUNTIFS(A1:A9;1;B1:B9;5)

答案是1。

接下来,B列中的“5”属于一个组,例如从1到9的分组。在这个例子中计算所有匹配的最佳方法是什么,这样对于A列中的所有“1”,我们必须找到所有匹配值为1到9的所有匹配。 B栏?!在上面的示例中,将导致“4”。显而易见的解决方案是使用一系列IF命令,但这样做效率很高,很容易出错,这很容易被监督。

=COUNTIFS(A1:A9;1;B1:B9;"<="&9)

仅作为上限使用。如果我将第三个条件范围和条件指定为“&gt; =”&amp; 1则不起作用 - 返回0.

加斯珀

5 个答案:

答案 0 :(得分:1)

当你说给出第三个标准范围时,你的意思是:

= COUNTIFS(A1:A9; 1; B1:B9;&#34;&LT; =&#34;和9,B1:B9;&#34;&GT; = 1&#34)

如果是,请尝试:

= COUNTIFS(A1:A9; 1; B1:B9;以及(&#34;&LT; =&#34;和9,;&#34;&GT; = 1&#34))

即具有两个条件范围,第二个范围具有与AND()

组合的两个条件

答案 1 :(得分:1)

当数据在A1:B9中时,使用D1中的查找表:E10,列D中的字母AJ和E列中的数字0到9以及B11中的以下公式引用在A11和A12中输入的字母:

= COUNTIFS(A1:A9,1,B1:B9,&#34;&GT; =&#34;&安培; VLOOKUP(A11,$ d $ 1:$ E $ 10,2,FALSE),B1:B9, &#34;&LT; =&#34;&安培; VLOOKUP(A12,$ d $ 1:$ E $ 10,2,FALSE))

有效,更改A11和A12中的字母会根据它们在D1:E10中的对应内容给出正确的计数。

答案 2 :(得分:0)

也许你想要的(编辑)是:

=COUNTIFS(A:A;1;B:B;">=1";B:B;"<=9")

答案 3 :(得分:-1)

几乎就在那里。我注意到只有当我使用&#34; =&#34;时,三个标准范围和条件才有效。签到一个条件。我一使用

=COUNTIFS(A1:A9;1;B1:B9;"<="&9,B1:B9;">=1")

它返回0.我的目标是最终使用VLOOKUP命令替换条件中的数字,因此最终的等式应该像是

=COUNTIFS(A1:A9;1;B1:B9;"<="&VLOOKUP(...),B1:B9;">=VLOOKUP(...)")

但&#34;&lt;&#34;和&#34;&gt;&#34;标志一塌糊涂。仍在寻找解决方案。

答案 4 :(得分:-1)

这是我的整行,如果它提供任何进一步的指示。 AND()命令结束 - 它仍然导致0

=COUNTIFS(INDIRECT(CONCATENATE("baza!$";SUBSTITUTE(ADDRESS(1;MATCH("card_type_id";baza!$A$1:$AAA$1;0);4);"1";"");"$2:$";SUBSTITUTE(ADDRESS(1;MATCH("card_type_id";baza!$A$1:$AAA$1;0);4);"1";"");"$15000"));IF(C6="računska";1;0);INDIRECT(CONCATENATE("baza!$";SUBSTITUTE(ADDRESS(1;MATCH(IF($C$4="CC_SI_klasifikacija";"building_classification_id";0);baza!$A$1:$AAA$1;0);4);"1";"");"$2:$";SUBSTITUTE(ADDRESS(1;MATCH(IF($C$4="CC_SI_klasifikacija";"building_classification_id";0);baza!$A$1:$AAA$1;0);4);"1";"");"$15000"));AND("<="&VLOOKUP($C$5;$K$203:$N$223;4;FALSE);">="&VLOOKUP($C$5;$K$203:$N$223;3;FALSE)))