【问题标题】:Using "INDIRECT" function in the "SUMPRODUCT" formula for True/False Cell Reference在真/假单元格参考的“SUMPRODUCT”公式中使用“INDIRECT”函数
【发布时间】:2014-03-30 15:40:50
【问题描述】:

这是我目前使用的公式:

=SUMPRODUCT((INDIRECT("A2"):INDIRECT("A"&(ROW()-1))=A359)*1)

效果很好,但我想改用它:

=SUMPRODUCT((INDIRECT("A2"):INDIRECT("A"&(ROW()-1))=INDIRECT("A"&(ROW())))*1)

不幸的是,我收到了#VALUE!。我究竟做错了什么? INDIRECT("A"&ROW(()))A359 返回相同的值,所以我不确定为什么这不起作用。

我不使用简单的COUNTIF 函数的原因是因为我去掉了所有不必要的组件,只留下了我遇到问题的部分(即我需要使用SUMPRODUCT 公式和@ 987654329@ 公式不起作用)

提前致谢!

【问题讨论】:

  • 对我来说似乎没有什么问题,而且它似乎在我的机器上运行良好。 (顺便说一句,您可以使用 A2 代替 INDIRECT("A2"))和 ROW() 代替 (ROW())
  • 我使用的是INDIRECT("A2"):INDIRECT("A"&(ROW()-1)) 而不是$A$2:$A358,因为我一直在从不同的工作表中复制、粘贴和删除这个公式。如果我要留在普通单元格引用A2 中,那么每次我移动/删除公式时都会搞砸。
  • 但 INDIRECT 会使您的公式不稳定,并且每次更改工作表中的 任何 单元格时都会重新计算(并且重新计算所有公式可能很耗时)。
  • 很奇怪,它对我不起作用。请查看此文件link

标签: excel excel-formula excel-indirect


【解决方案1】:

我不确定你为什么需要 INDIRECT 而不是普通的单元格引用,但这里的具体问题是 ROW 函数返回一个“数组”,即使它返回一个值,例如它返回 {"x"} 而不仅仅是 "x" - 在某些情况下 Excel 无法处理。

尝试将第二个 ROW 函数包装在 SUM 函数中 - 值不会改变但它会删除数组,即

=SUMPRODUCT((INDIRECT("A2"):INDIRECT("A"&(ROW()-1))=INDIRECT("A"&SUM(ROW())))*1)

这将消除#VALUE!错误,同时保持公式的基本结构不变

【讨论】:

  • 我从未意识到ROW() 返回了一个数组。今天学到了新东西! :)
  • @Jerry - 在大多数情况下它没有区别,所以你不会注意到 - COLUMN 函数做同样的事情(而 ROWSCOLUMNS 没有)
【解决方案2】:

试试这个:

=SUMPRODUCT((($A$2:INDEX($A:$A,ROW()-1))=INDEX($A:$A,ROW()))*1)

它给你同样的结果。

但是上面的公式是不稳定的。相反,我会使用下一个,比如B3

=SUMPRODUCT((($A$2:$A2)=$A3)*1)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多