excel - 在传递给公式之前向每个单元格添加一个
问题描述
我想取值可能小于 1 的列的 geomean。我想在计算 geomean 之前为每个单元格添加一个,并且我不想在计算中包含隐藏的行。
到目前为止我一直在使用=POWER(AGGREGATE(6,5,O6:O22),1/AGGREGATE(2,5,O6:O22))
,因为这让我可以忽略隐藏的行。但是,当 O6:O22 中给定单元格中的值小于 1 时,这在数学上是不正确的。我想将值向上偏置 1,进行计算,然后在最后取消偏置结果。实际上,类似=POWER(AGGREGATE(6,5,O6:O22 + 1),1/AGGREGATE(2,5,O6:O22 + 1)) - 1
我知道数组公式可以做这样的事情,但我还没有找到一个有效的例子。以上在语法上是不正确的,尽管我发现一些例子表明并非如此。
我故意避免使用另一个隐藏列进行计算,因为我已经在此表上隐藏了列和行以用于数据呈现。在取消隐藏数据时不断重新隐藏计算列会很麻烦。
解决方案
她是根据您的公式使用的公式(请参阅下面的较短版本)。
=POWER(PRODUCT(IF(SUBTOTAL(3,OFFSET(O6:O22,ROW(O6:O22)-MIN(ROW(O6:O22)),,1)),O6:O22+1)),1/SUMPRODUCT(SUBTOTAL(3,OFFSET(O6:O22,ROW(O6:O22)-MIN(ROW(O6:O22)),,1))))-1
这是一个数组公式,退出编辑模式时必须使用 Ctrl-Shift-Enter 而不是 Enter 来确认。
编辑:
您可以将 GEOMEAN() 与上面的 IF() 一起使用,以更短的公式返回相同的结果:
=GEOMEAN(IF(SUBTOTAL(3,OFFSET(O6:O22,ROW(O6:O22)-MIN(ROW(O6:O22)),,1)),O6:O22+1))-1
仍然是一个数组公式,退出编辑模式时需要使用 Ctrl-Shift-Enter 而不是 Enter 来确认。
推荐阅读
- python - 为什么画一个边框很厚的 PyGame 矩形会画一个加号呢?
- typo3 - TYPO3 创建帖子后重定向到 ShowAction
- r - 比较 Data.Frame 行中的单元格值 - 令人费解的输出
- django - 如何动态地将 django 对象添加到查询集中
- java - 收到此错误 --java.util.NoSuchElementException: No line found -- 在第 20,27 和 34 行
- marklogic - 无法在 MarkLogic SSO 的 URL 重写器中运行 XQuery 脚本
- python - pyvirtualdisplay 中的 XStartError
- swift - “从抛出函数到非抛出函数的无效转换”,试图存储一个闭包,它不能抛出
- flutter - 我想为这个小部件中的局部变量分配一个日期值并显示在文本框中
- c# - DataGrdiview ComboBox 更改结果