0

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

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

我的理解是 Excel 将遍历每个 SUMIF 的所有 1000 列,执行相同的搜索 20 次。有没有替代方案?

4

1 回答 1

0

这就是我所决定的。它绝对不能满足每个人的需求。

情况:
- 我不想在 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)

然后我们使用这个计数和表来执行很好的快速求和:

SUM(OFFSET(C:C,0,0,RowCount,1))
于 2013-04-15T23:34:36.200 回答