我有以下公式:
=IF(DIV_P="ALT",(TEXT(SUMIF(ALT,F3,QTY_R),"#,##0")&" CS / "&TEXT((SUMIF(ALT,F3,QTY_S)),"#,##0")&" P"),(TEXT(SUMIF(DIV_P,F3,QTY_R),"#,##0")&" CS / "&TEXT((SUMIF(DIV_P,F3,QTY_S)),"#,##0")&" P"))
由于某种原因,这个公式返回了 SPILL 错误。但是,我尝试将其分成两部分...
=TEXT((SUMIF(ALT,F3,QTY_R)),"#,##0")&" CS / "&TEXT((SUMIF(ALT,F3,QTY_S)),"#,##0")&" P"
...和...
=TEXT(SUMIF(DIV_P,F3,QTY_R),"#,##0")&" CS / "&TEXT((SUMIF(DIV_P,F3,QTY_S)),"#,##0")&" P"
...并且它们单独工作时都按预期运行。从 Microsoft 官方的 SPILL 错误支持资源来看,可能存在一些原因,例如内存不足、版本不兼容等。我目前使用的是公共计算机,因此完全有可能存在这样的原因。我只是想确保我没有遗漏公式语法中的其他内容。有什么想法吗?谢谢!
答案1
终于解决了这个问题,所以我只是来这里更新答案:
致谢 Reddit 用户:
- @BronchitisCat 解释了为什么预期输出与实际输出不一致
- @spinfuzer 提供工作公式
- @PaulieThePolarBear 详细分享了其他相关见解。
- 以及其他花时间为 Reddit 帖子做出贡献的人!
这里的主要问题是SUMIF()
返回标量值(无关注:上述内容是正确的除了当它的第二个值不是单个单元格或值时)。IF()
另一方面,该函数不是履行任何聚合类型;因此,当使用来IF()
针对数组、范围、命名范围等评估某些逻辑时,输出将在每次迭代中将每个结果返回到新单元格中。
以下是产生预期结果的工作公式变体:
=TEXT(SUM((IF(DIV_P<>"ALT",DIV_P,ALT)=F3)*(QTY_R)), "#,##0 \C\S")& " / " &TEXT(SUM((IF(DIV_P<>"ALT",DIV_P,ALT)=F3)*(QTY_S)), "#,##0 \P")
不使用的变体IF()
:
=TEXT((SUMIF(ALT,F3,QTY_R))+SUMIF(DIV_P,F3,QTY_R),"#,##0")&" CS / "&TEXT((SUMIF(ALT,F3,QTY_S)+SUMIF(DIV_P,F3,QTY_S)),"#,##0")&" P"