excel - Excel Sum(Indirect))
问题描述
I created a code that has the user type in how many stages are needed and then from there, the stages are copied from a "stage1" worksheet. On another sheet I am trying to create a sum(indirect)) formula to look up the materials number and then correspond to the "amt to order" column. I created this formula:
= SUMIF(INDIRECT("Stage1!$C$6:$C$18"), $A5, INDIRECT("Stage1!$E$6:$E$18")) +SUMIF(INDIRECT("Stage2!$C$6:$C$18"), $A5, INDIRECT("Stage2!$E$6:$E$18")) +SUMIF(INDIRECT("Stage3!$C$6:$C$18"), $A5 ,INDIRECT("Stage3!$E$6:$E$18")) +SUMIF(INDIRECT("Stage4!$C$6:$C$18"), $A5 ,INDIRECT("Stage4!$E$6:$E$18")) +SUMIF(INDIRECT("Stage5!$C$6:$C$18"), $A5 ,INDIRECT("Stage5!$E$6:$E$18")) +SUMIF(INDIRECT("Stage6!$C$6:$C$18"), $A5 ,INDIRECT("Stage6!$E$6:$E$18")) +SUMIF(INDIRECT("Stage7!$C$6:$C$18"), $A5, INDIRECT("Stage7!$E$6:$E$18")) +SUMIF(INDIRECT("Stage8!$C$6:$C$18"), $A5, INDIRECT("Stage8!$E$6:$E$18")) +SUMIF(INDIRECT("Stage9!$C$6:$C$18"), $A5, INDIRECT("Stage9!$E$6:$E$18")) +SUMIF(INDIRECT("Stage10!$C$6:$C$18"), $A5, INDIRECT("Stage10!$E$6:$E$18")) +SUMIF(INDIRECT("Stage11!$C$6:$C$18"), $A5, INDIRECT("Stage11!$E$6:$E$18")) +SUMIF(INDIRECT("Stage12!$C$6:$C$18"), $A5, INDIRECT("Stage12!$E$6:$E$18")) +SUMIF(INDIRECT("Stage13!$C$6:$C$18"), $A5, INDIRECT("Stage13!$E$6:$E$18")) +SUMIF(INDIRECT("Stage14!$C$6:$C$18"), $A5, INDIRECT("Stage14!$E$6:$E$18")) +SUMIF(INDIRECT("Stage15!$C$6:$C$18"), $A5, INDIRECT("Stage15!$E$6:$E$18")) +SUMIF(INDIRECT("Stage16!$C$6:$C$18"), $A5, INDIRECT("Stage16!$E$6:$E$18")) +SUMIF(INDIRECT("Stage17!$C$6:$C$18"), $A5, INDIRECT("Stage17!$E$6:$E$18")) +SUMIF(INDIRECT("Stage18!$C$6:$C$18"), $A5, INDIRECT("Stage18!$E$6:$E$18")) +SUMIF(INDIRECT("Stage19!$C$6:$C$18"), $A5, INDIRECT("Stage19!$E$6:$E$18")) +SUMIF(INDIRECT("Stage20!$C$6:$C$18"), $A5, INDIRECT("Stage20!$E$6:$E$18")) +SUMIF(INDIRECT("Stage21!$C$6:$C$18"), $A5, INDIRECT("Stage21!$E$6:$E$18")) +SUMIF(INDIRECT("Stage22!$C$6:$C$18"), $A5, INDIRECT("Stage22!$E$6:$E$18")) +SUMIF(INDIRECT("Stage23!$C$6:$C$18"), $A5, INDIRECT("Stage23!$E$6:$E$18")) +SUMIF(INDIRECT("Stage24!$C$6:$C$18"), $A5, INDIRECT("Stage24!$E$6:$E$18")) +SUMIF(INDIRECT("Stage25!$C$6:$C$18"), $A5, INDIRECT("Stage25!$E$6:$E$18")) +SUMIF(INDIRECT("Stage26!$C$6:$C$18"), $A5, INDIRECT("Stage26!$E$6:$E$18")) +SUMIF(INDIRECT("Stage27!$C$6:$C$18"), $A5, INDIRECT("Stage27!$E$6:$E$18")) +SUMIF(INDIRECT("Stage28!$C$6:$C$18"), $A5, INDIRECT("Stage28!$E$6:$E$18")) +SUMIF(INDIRECT("Stage29!$C$6:$C$18"), $A5, INDIRECT("Stage29!$E$6:$E$18")) +SUMIF(INDIRECT("Stage30!$C$6:$C$18"), $A5, INDIRECT("Stage30!$E$6:$E$18"))
But when I used it and had the user only input 9 stages then the #REF! error came back. Any help would be great! I've been stuck for a while.
Thank you!
解决方案
我想我明白你在做什么。您希望 INDIRECT 将本质上相同的 SUMIF 应用于多个工作表。这是一个使用减少数量的工作表的示例。
我使用以下数据创建了 4 个相同的工作表,Stage1、Stage2、Stage3 和 Stage4。
然后在 Sheet1(我打算在其中使用公式)中,我在 F2:F5 中列出了这些相同的工作表。在 A5 中我使用了标准值,然后在 B5 中我使用了这个公式。
'standard formula with known number of worksheets
=SUMPRODUCT(SUMIF(INDIRECT(TEXT(F$2:F$5, "'@'!")&"C6:C18"),$A5,INDIRECT(TEXT(F$2:F$5, "'@'!")&"E6:E18")))
'array formula for unknown number of worksheets
=SUMPRODUCT(IFERROR(SUMIF(INDIRECT(TEXT(F$2:F$5, "'@'!")&"C6:C18"),$A5,INDIRECT(TEXT(F$2:F$5, "'@'!")&"E6:E18")), 0))
在下面的示例图像中,您可以看到该公式从每个工作表中提取 SUMIF 小计并生成总计。
如果您不想修改工作表列表,则可以使用第二个公式。如果找不到工作表,它将为列表中的该名称返回零,而不是 #REF!错误。
注意,第二个公式是数组公式,必须用ctr+shift+enter结束,而不是直接enter。
使用第二个数组公式和列表中不存在的工作表名称。
现在,您应该能够通过创建要小计的工作表列表来显着减少您的公式。并调整上述公式以适应。
您可以通过将此公式放入 Sheet1!G2 并填写来测试列表中的工作表名称。
=NOT(ISERROR(INDIRECT(TEXT(F2, "'@'!")&"A1")))
TRUE 表示工作表存在于工作簿中,FALSE 表示您在某处搞砸了。
推荐阅读
- python - XLwings - 即使使用 kill() 方法也无法让 Excel 应用程序退出
- haskell - 如何使我的 Haskell 函数尽可能短?
- reactjs - Material-UI 应用 backgroundColor 不起作用
- alloy - 如何在启动合金时删除警告,我的合金 GUI 也有一些看起来像问题的条纹
- css - 定位第二个元素和之后的第三个兄弟元素
- r - 如何在 R 中的函数中使用不同的列名
- firebase - Firstore 数据库规则“request.auth.uid”不起作用
- javascript - blob 图像始终大小相同且不显示完整图像
- python-3.x - 如何用while循环构造一个python程序
- java - JAVA maven全新安装测试未完成迭代器