代码之家  ›  专栏  ›  技术社区  ›  Richard de Ree

使用COUNTIFS或dcounta代替多个COUNTIF

  •  0
  • Richard de Ree  · 技术社区  · 9 年前

    在我们的员工时间表中,员工可以有“A”班(上午9点开始)和“B”班(上午10:30开始)等。 我需要知道员工总共轮换了多少次,所以我现在使用的是多次计数来计算一系列单元格中几个参数的出现次数

    =countif(D8:BM8;A43)+countif(D8:BM8;A44)+countif(D8:BM8;A45)+countif(D8:BM8;A46)++countif(D8:BM8;A47)
    

    其中字段A43包含“A”,字段A44包含“B”等。

    这是完美的,然而,我想有一个更聪明的方法来做到这一点,所以我尝试使用“COUNTIFS”,但结果总是0,我不知道为什么

    =COUNTIFS(D8:BM8;A43;D8:BM8;A44;D8:BM8;A45;D8:BM8;A46;D8:BM8;A47)
    

    if看起来像是用逻辑and检查了所有参数,但我需要一个逻辑and,在这种情况下,或者是用dcounta的解决方案

    1 回复  |  直到 9 年前
        1
  •  1
  •   JPV    9 年前

    您得到的是0,因为没有满足所有条件的单元格。 相反,也许可以尝试以下方式

    =sum(ArrayFormula(--regexmatch(D8:BM8; textjoin("|"; 1; A43:A47))))
    

    Regexmatch为D8:BM8中的所有单元格返回布尔值(如果找到匹配项,则为true,否则为false)。这些布尔值被转换为1和0(参见正则表达式前面的-)。然后将所有这些值相加。