如何用另一个常规公式替换数组 excel 公式以避免长时间计算

如何用另一个常规公式替换数组 excel 公式以避免长时间计算

例子

通过使用范围(E11:E16)中的数组公式根据上面的例子:

计算范围 (E2:E7) 中仅满足以下条件的唯一客户数:

1- 购买产品 1,无论他们是否购买了其他产品

2- 总计购买少于 5 件。如果有任何回头客

3- 其区域代码与范围内的相应代码匹配(D11:D16)

我使用以下数组公式在E11中:

=SUM(IF(FREQUENCY(IF($G$2:$G$7=D11,IF($I$2:$I$7="Product1",IF($J$2:$J$7<5,IF($E$2:$E$7<>"",MATCH($E$2:$E$7,$E$2:$E$7,0))))),ROW($E$2:$E$7)-ROW(G2)+1),1))

这个公式效果很好,但当在包含大量行和列的庞大数据库中使用它时,excel 需要大约 3 分钟才能计算出一个单元格,这样继续下去就太糟糕了

有什么方法可以将这个数组公式转换为常规公式...任何帮助都将不胜感激...提前致谢

答案1

我会为此使用 Power Query。Power Query 是 Microsoft 为 Excel 2010 和 2013 提供的免费插件,内置于 Excel 2016 中的“数据”功能区中的“获取和转换”下。

我不确定您对“吨”的定义,但 Power Query 可以轻松扩展到大约 1000 万行输入。如果您的数据源实际上是一个数据库(例如 SQL Server、Oracle 等),Power Query 会将尽可能多的工作转移到数据库。

对于您的挑战,我将首先使用以下方式创建查询:来自表格按钮从第一个表读取,然后选择关闭并加载/关闭并加载到,然后选择仅创建连接。如果您的源数据实际上来自真实数据库或其他文件,那么将 Power Query 直接指向该源会更有效率。

然后我将从范围 D11:D16 中的区域代码列表中启动实际输出查询,使用来自表格按钮。

我将添加一个合并步骤来加入区号的第一个查询,然后展开它的所有列。

然后我会添加一个条件列称为产品 1,指定:如果(列)产品等于(值)产品 1,则(列)产品

然后我会添加一个通过...分组步骤,分组区号顾客,并汇总销售总额产品 1 的最大值

然后我会过滤产品 1列仅包含值为“产品 1”的行,然后过滤销售量列小于 5。

最后我再说一遍通过...分组步骤,分组区号并汇总默认数数

默认情况下,Power Query 会将其传送到新工作簿的新表中 - 最好将其保留在那里以避免与其他对象发生冲突。

当源数据发生变化时,只需刷新查询即可重新生成输出表。

相关内容