【问题标题】:Sumproduct formula returns a #VALUE! error when the last array refers to a column with formulas in every row. MS Excel 2010Sumproduct 公式返回一个#VALUE!当最后一个数组引用每行中都有公式的列时出错。微软 Excel 2010
【发布时间】:2013-03-05 10:56:30
【问题描述】:

我正在尝试找到一种简单的方法来计算工作簿中多张工作表的销售佣金。每个月,我都需要找出在指定月份内仅售出的商品的总净利润。

我目前使用的公式是:

=SUMPRODUCT((TEXT('Sheet Name'!$P$3:P24,"MY")=TEXT($G$4,"MY"))*'Sheet Name'!$M$3:M24)
  • P 列显示销售日期,
  • M 列的每一行都包含一个计算净利润的公式,并且
  • 单元格 G4 是我输入当前使用的月份和年份的地方。

我得出的结论是它只给了我#VALUE!由于 M 列的 每一行 中的公式导致的错误(例如:=IF(OR(F15=0,G15=0)," ",(F15-L15)))。

当我引用不包含公式的不同列(代替列 M)时,它可以完美运行(例如:=SUMPRODUCT((TEXT('Sheet Name'!$P$3:P24,"MY")=TEXT($G$4,"MY"))*'Sheet Name'!$G$3:G24))。此外,将星号更改为逗号会导致公式计算错误,添加(--(TEXT 双重否定也不能解决问题。

如何在不从 M 列中删除公式的情况下让这个数组进行计算?

感谢您的关注。

【问题讨论】:

    标签: arrays error-handling excel-formula excel-2010 array-formulas


    【解决方案1】:

    我认为它会给您一个 #VALUE 错误,因为您的公式会生成文本(空格),并且在尝试将空格乘以数字(也称为 True 或 False)时会出错。我认为将 M 列公式更改为 =IF(OR(F15=0,G15=0),0,(F15-L15)) 会更好。您是否有特定理由不将其评估为0?您是否有理由转换为文本来进行月/年检查?

    试试这样的:=SUMPRODUCT(--(MONTH('Sheet Name'!$P$3:P24)=MONTH($G$4)),--(YEAR('Sheet Name'!$P$3:P24)=YEAR($G$4)),'Sheet Name'!$M$3:M24)。当然,这取决于输入日期作为实际日期。 -- 用于将逻辑/布尔值(真/假)更改为 1 或 0。它不会对文本做任何有用的事情。例如,它也应该像=SUMPRODUCT((MONTH('Sheet Name'!$P$3:P24)=MONTH($G$4))*(YEAR('Sheet Name'!$P$3:P24)=YEAR($G$4))*'Sheet Name'!$M$3:M24) 一样工作,因为乘法会将真值语句转换为数字。诀窍是确保在评估其他所有内容时,您拥有=sumproduct(numbers,numbers,numbers)。您的实例是一组=sumproduct(numbers/text)

    【讨论】:

    • 我确实希望 M 列中的单元格显示空白,直到销售价格(F 列)和商品成本(G 列)具有值。不过,我很欣赏这个建议。 =SUMPRODUCT(--(MONTH('Sheet Name'!$P$3:P24)=MONTH($G$4)),--(YEAR('Sheet Name'!$P$3:P24)=YEAR($G$4)),'Sheet Name'!$M$3:M24) 是对我有用并且计算正确的公式。我确实有一种预感,导致文本的公式是问题所在,但我不是 100% 并且在收到您的建议之前我不知道更好的方法来编写它。非常感谢您的帮助!
    • 那么您只需要解决M列中的空白成本问题吗?我相信=IF(OR(F15=0,G15=0),"",(F15-L15)) 会起作用,但我还没有测试过。
    • 是的,M 列很好。非常感谢你的帮助!! (对不起,我没有早点接受……我是新来的。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多