问题标签 [array-formulas]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
1413 浏览

excel - 试图提高数组公式的效率

我有一个包含多个嵌套 IF 语句的 SUM 数组公式,因此效率非常低。我的公式跨越 500 多行,但这里是它的一个简单版本:

如您所见,公式的前半部分检查数组大于零的位置,如果是,则将公式第二部分中的值相加。

你会注意到相同的 IF 语句在那里重复了两次,这对我来说效率很低,但这是我得到正确答案的唯一方法。

我的示例数据如下:

电子表格中的示例数据 http://clients.estatemaster.net/SecureClientSite/Download/TempFiles/example.jpg 在这种情况下,使用我上面提到的公式,答案应该是 350。

如果我试图在数组中放入一个 MAX 语句,因此删除测试以找到它大于零的位置,所以它是这样的:

但是,它似乎只计算每个范围内的第一行数据,它给了我 70 的错误答案。

有谁知道我可以通过不需要在其中重复 IF 语句来减小公式的大小或使其更有效?


更新

吉米

您建议的 MAX 公式实际上并不适用于所有情况。

如果我将第 1 行到第 5 行中的示例数据更改如下(显示某些数字大于第 7 到第 11 行中它们各自的单元格,而某些数字则较低)

电子表格中的示例数据 http://clients.estatemaster.net/SecureClientSite/Download/TempFiles/example2.jpg

我试图达到的正确答案是 310,但是您建议 MAX 公式给出的错误答案是 275。

我猜这个公式需要是一个数组函数才能给出正确的答案。

还有其他建议吗?

0 投票
2 回答
885 浏览

excel - 优化多标准 IF

我正在执行需要很长时间才能完成的数组计算。我想进一步优化我的公式。所有的公式都具有相同的性质——它们对一列值执行一些高级函数(平均值、斜率、最小值、最大值)。但是,并非列中的所有单元格都包含在数组中。我使用多个 IF 标准来选择包含哪些单元格。所有比较都与当前行进行。以下是数据示例:

E 看起来像这样

因此,一旦计算出 E2,我就必须自动填充 E 列。F、G、H 列……使用相同的方法,要么选择不同的值进行操作,要么选择不同的函数来执行。我的数据集非常大,只有其中的几个,电子表格需要一个多小时的时间来计算。每隔一段时间,我会添加第四个标准,所有其他标准都相同。

有效率吗?一些想法:

  1. 我可以每列使用一个数组而不是每列数千个吗?
  2. 我可以压缩前三个条件以便输出是行号吗?也许随后的公式不必搜索多个条件而只需执行该功能?
  3. 或者以某种方式建立标准?因此,新列将返回公司相同的所有行。另一列返回第一列中生成相同的所有行……依此类推……
0 投票
23 回答
104836 浏览

google-apps-script - 选择列的最后一个值

我有一个电子表格,其中 G 列中有一些值。其中一些单元格是空的,我需要将该列中的最后一个值放入另一个单元格。

就像是:

除了那LAST不是一个功能。

0 投票
4 回答
9363 浏览

excel - 在 Excel 中计算移动平均线

我想计算一列最后一个数字的移动平均值,比如 20 个。一个问题是该列的某些单元格可能是空的,它们应该被忽略。例子:

最后三个的移动平均线为 (155+167+201)/3。我尝试使用平均值、偏移量、索引来实现这一点,但我根本不知道如何。我对宏有点熟悉,所以这样的解决方案可以正常工作:=MovingAverage(A1;3)

感谢您提供任何提示或解决方案!

0 投票
2 回答
184 浏览

excel - 根据数值添加可变数量的值

问题解决了

俗气的错误...大声笑

对于我的时间列,当我使用毫秒时,我正在使用我没有提到的工作表中的列。我正在使用我的毫秒间隔列。我认为这会起作用,但忘记了我的新公式是基于特定时间的,而不是自看到最后一件事以来的时间间隔。所以总和总是小于 60000。感谢您的所有帮助,并希望我能接受两个答案。=)

重新审视整个问题

以下是我的一些实际值。我之前使用的是几秒钟,但在我的真实文档中我使用的是毫秒。我需要 sumoflist 列是从当前时间开始 60 秒的小数的总和。这将是 60000 毫秒。

这是我之前使用的 EXACT 公式。是的,我输入正确,但仍然无法正常工作。我必须对其进行一些修改,以便它可以与我的工作表和毫秒一起使用。

求和函数将对所有这些求和,无论它们多大。计数也一样。

由于我给了您一小部分数据,因此以 20000 为例。感谢迄今为止帮助过我的所有人!请继续帮助我!<3


0 投票
3 回答
10441 浏览

excel - 我需要忽略 excel 2007 MIN 数组中的空白单元格,但我不断得到 0

这是我拥有的数组:

它仍然返回带有空单元格的零!

0 投票
2 回答
2922 浏览

apache - Apache POI 和 SUMPRODUCT 公式评估

我有一个模板 XLS 文件,我使用 Apache POI 加载并在其中写入大量数据,然后将其另存为另一个文件。我的 XLS 文件中有这样的公式:

也试过

如果我在 Excel 中的单元格上按 Enter,这些评估正确。但是,只需调用

似乎没有评估它们,也没有按下 Excel 中的“立即计算”按钮 - 所以我想这是一个特殊的公式或函数。

其他更传统COUNTIF的 s 和SUMIFs 工作正常,但是这些不允许指定多个条件。

POI 不支持数组公式。

有什么办法可以使这些工作。我正在使用 POI 3.7 版。

0 投票
2 回答
10626 浏览

excel - 在 Excel 工作表中查找所有数组公式

有没有办法在给定的 Excel 电子表格中查找所有数组公式?

0 投票
2 回答
1491 浏览

excel - MaxIf 与相关的行信息?

我使用数组公式来确定行数据的特定子集的最大值:

这可以正常工作并让我获得 C 中的最大值,其中 A =“somestring”。

现在,我想返回与此“最大”行关联的其他列值,它们是字符串。直觉上我认为我可能需要放弃布尔逻辑乘法策略,因为涉及到字符串值。最好/最干净的方法是什么?

0 投票
3 回答
17911 浏览

excel - 使用 VBA 将 ArrayFormula 设置为多个 Excel 单元格

我有一个输出单个值的数组公式,我想给一大堆单元格提供相同的数组公式。问题是当我将数组公式分配给范围时,它以这样一种方式解释公式,因为它们都共享对数组公式的单个调用的输出,而不是每个输出单独的值。

为了向您展示我的意思,我使用以下代码:

我想要的是这样的结果: 期望的结果

这就是我在范围内的每个单元格中分别输入数组公式时的样子。

我得到的是: 给定结果

第一个单元格中的数组公式的输出在所有列中重复 - 它们都共享相同的输出。

如何以编程方式分配数组公式,就好像每个单元格都单独分配一样?


公式为:

{=INDEX(BatchResults,MATCH(TTID&CHAR(1)&ROW()-1,BatchResultsTTIDS&CHAR(1)&BatchResultsLayers,0),MATCH(A$1,BatchTTIDData!$1:$1,0))}

它必须作为数组公式放入,因为它不是在单个列上执行匹配,而是在两个连接列上执行匹配。列的串联必须作为数组返回,因此公式必须作为数组公式输入。


到目前为止,最简单的解决方案是以下公认答案的变体: