根据多个条件计算包含特定值的行

时间:2015-08-15 03:08:14

标签: excel-formula

我正在寻找更好的方法来完成以下任务。 我有2张桌子。表1包含我想要计算行数的值:

      A
 1    ID    
 2    a
 3    b
 4    c
 5    d
 6    e
 7    f

表2包含按行排列的数据:

       A       B     C     D     E     F     G
 1   FileNo Data1 Data2 Data3 Data4 Data5 Data6
 2    w1       a     b     a     b     a     b
 3    w1       a     b     a     b     e     f
 4    w2       c     d     c     d     e     f
 5    w1       c     d     c     d     a     b
 6    w1       b     c     b     c     e     f
 7    w2       a     b     a     d     a     b
 8    w3       c     d     c     d     e     f

我需要计算以“w1”开头的行数并包含值“a”(然后是“b”和“c”等等,然后对于以“w2”开头的行相同)。 蛮力方式,我怎么看,就是在每一行中使用COUNTIF根据行中值的存在得到1或0。然后使用SUMPRODUCT根据FileNo标准和那些1/0计算行数。问题是上面只是一个例子。我实际上在表1中有大约40个值,在表2中有几千个。在数千行中使用带有COUNTIF的40列看起来很笨重。我相信有更优雅的方法来解决这个问题。

1 个答案:

答案 0 :(得分:0)

你必须求助于易变OFFSET¹ function才能遍历寻找存在ws x 值的行,并且至少出现一次 a,b ,c,d,e f

COUNTIF across rows with two criteria

J2中的数组公式

=SUM(IF($A$2:$A$9999=J$1, SIGN(COUNTIFS(OFFSET($A$2, ROW($1:$9998)-1, 1, 1, 6), $I2))))

需要使用 Ctrl + Shift + Enter↵来最终确定数组公式。一旦正确进入第一个单元格,就可以像任何其他公式一样向下或向右填充或复制它们。将J2填充到L2然后将J2:L2填充到J7:L7。

为了您自己的目的而转录此公式时,请注意虽然A2:9999ROW(1:9998)被一行错开,但它们的大小相同且非常重要。 ROW(...)应始终从 1 开始,但与A列中的范围相同。您正在寻找 A2中的位置:A9999,而不是工作表上的物理行号。

我尝试对来自ws1的结果进行颜色匹配,以便您可以轻松识别该标准对的工作结果。

¹ OFFSET被认为是一个易失性函数,只要工作簿中的任何内容发生更改,就会重新计算。