代码之家  ›  专栏  ›  技术社区  ›  WoodenKitty

具有多个SUMIF公式而不需要用户应用筛选器的替代方案

  •  0
  • WoodenKitty  · 技术社区  · 11 年前

    假设在您的工作簿中: Sheet1有一个包含20列和约1000行的表格。每一行都属于50个类别中的一个。开发人员无法对Sheet1进行任何可见的更改。

    Sheet2有一个单元格,用户可以在其中输入类别ID,并在Sheet1的每一列上显示SUMIF的结果。

    我的理解是,Excel将对每个SUMIF的所有1000列进行迭代,执行20次相同的搜索。有其他选择吗?

    1 回复  |  直到 11 年前
        1
  •  0
  •   WoodenKitty    11 年前

    这是我决定的。这肯定不适合每个人的需求。

    情况:
    -我不想在10000行上运行SUMIF 20次
    -我可以放心地假设,每个类别的行数永远不会超过200行(即满足我的sumif标准的一组行)。
    -对于我来说,拥有一个只包含符合该条件的行的表也是很有用的。

    解决方案:
    我创建了一个包含200行公式的表,这些公式将显示符合我的条件的行。

    最左边的列将具有下一个匹配行的行号,或者为空,如果没有其他列,则不进行搜索。

    左列第一行:

    IFERROR(MATCH(CategoryID,'DataTable'!B:B,0),"")
    

    左列的后续行(A2是上面的单元格):

    IF(A2="","",MATCH(CategoryID,OFFSET('DataTable'!B:B,A2,0,RowsInTable-A2,1),0)+A2))
    

    它右边的所有单元格都是基本的INDEX公式,使用最左边一列的行号。

    要计算找到的结果数,我们使用:

    =COUNTA(A2:A202)-COUNTBLANK(A2:A202)
    

    然后,我们使用this count和表来执行漂亮的快速SUM:

    SUM(OFFSET(C:C,0,0,RowCount,1))