一次对一系列值使用 COUNTIFS



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",我们必须在 B 列中找到值从 1 到 9 的所有匹配项?!在上面的示例中,这将导致"4"。显而易见的解决方案是使用一系列IF命令,但这效率低下,很容易出错,很容易被监督。

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

仅作为上限工作。如果我将第三个条件范围和条件指定为">="&1,则它不起作用 - 返回 0。

加斯帕

如果数据位于 A1:B9 中,则使用 D1:E10 中的查找表,其中字母 A-J 在 D 列中,数字 0 到 9 在 E 列中,B11 中的以下公式引用在 A11 和 A12 中输入的字母:

=COUNTIFS(A1:A9,1,B1:B9,">="&VLOOKUP(A11,$D$1:$E$10,2,FALSE(,B1:

B9,"<="&VLOOKUP(A12,$D$1:$E$10,2,FALSE((

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

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

=计数(A1:A9;1;B1:B9;"<="&9,B1:B9;">=1"(

如果是这样,请尝试:

=计数(A1:A9;1;B1:B9;AND("<="&9,;">=1"((

即有两个条件范围,第二个范围具有两个条件与 AND(( 组合在一起

也许你想要的是:

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

快到了。我注意到,只有当我在条件中使用"="符号时,三个条件范围和条件才有效。只要我使用

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

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

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

但是"<"和">"符号与此混淆。仍在寻找解决方案。

这是我的整条线,如果它提供了任何进一步的指示。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)))

最新更新