在 excel 中具有最大条件的 Sumproduct
Sumproduct with max condition in excel
我有这个公式,但它不起作用
=SUMPRODUCT(--(NUMBERVALUE(RIGHT(Sheet1!A:A,2))=MAX(NUMBERVALUE(Sheet1!A:A,2))),--(Sheet1!AG:AG=A9),(Sheet1!AA:AA))
我的问题出在 sumproduct 的第一部分数组中
NUMBERVALUE(RIGHT(Sheet1!A:A,2))=MAX(NUMBERVALUE(Sheet1!A:A)))
A 列包含以下类型的值:
Till_Date
2016/10
2016/10
2016/11
2016/11
2016/12
2016/8
等..
对于每一行,如果它是整列中的最后一个月,我想在月份上设置一个条件,所以我的想法是获取右边 2 位数字的最大值,然后为每一行比较右边 2 位数字整列的最大值。
然而还是不行,感觉快要修复了却找不到问题所在
如有任何帮助,我们将不胜感激。
提前致谢
乔治·萨巴格
我不认为你很接近解决方案。
- 从“2016/8”开始,您认为最右边的 2 位数字是什么?
- 即使是
NUMBERVALUE
也会导致单元格 A1
= "Till_Date" 出现 #VALUE
错误 - 最右边的 2 = "te"
- 在您的
MAX(NUMBERVALUE(Sheet1!A:A))
中,NUMBERVALUE
将导致 A1:A7
中每个单元格出现 #VALUE
错误,因为所有单元格都是文本。所以 MAX
也是 #VALUE
错误。
问题1可以通过计算“/”的位置并取其后的数字来解决。
问题2和3只有排除错误才能解决。但是 IFERROR
在 SUMPRODUCT
生成的矩阵上下文中不起作用。为此,需要一个真正的数组公式。
所以也许
{=SUM(IF(IFERROR(--RIGHT(Sheet1!A:A,LEN(Sheet1!A:A)-FIND("/",Sheet1!A:A)),0)=MAX(IFERROR(--RIGHT(Sheet1!A:A,LEN(Sheet1!A:A)-FIND("/",Sheet1!A:A)),0)),IF(Sheet1!AG:AG=A9,Sheet1!AA:AA)))}
会为你工作。
这是一个数组公式。将其输入到没有大括号的单元格中,然后按 [Ctrl]+[Shift]+[Enter] 确认。大括号将自动出现。
使用整个 Sheet1!A:A
范围,这将是非常糟糕的表现。所以你应该缩小范围。 Sheet1!$A:$A000
例如。与 Sheet1!$AG:$AG000
和 Sheet1!$AA:$AA000
.
相同
我有这个公式,但它不起作用
=SUMPRODUCT(--(NUMBERVALUE(RIGHT(Sheet1!A:A,2))=MAX(NUMBERVALUE(Sheet1!A:A,2))),--(Sheet1!AG:AG=A9),(Sheet1!AA:AA))
我的问题出在 sumproduct 的第一部分数组中
NUMBERVALUE(RIGHT(Sheet1!A:A,2))=MAX(NUMBERVALUE(Sheet1!A:A)))
A 列包含以下类型的值:
Till_Date
2016/10
2016/10
2016/11
2016/11
2016/12
2016/8
等..
对于每一行,如果它是整列中的最后一个月,我想在月份上设置一个条件,所以我的想法是获取右边 2 位数字的最大值,然后为每一行比较右边 2 位数字整列的最大值。
然而还是不行,感觉快要修复了却找不到问题所在
如有任何帮助,我们将不胜感激。
提前致谢
乔治·萨巴格
我不认为你很接近解决方案。
- 从“2016/8”开始,您认为最右边的 2 位数字是什么?
- 即使是
NUMBERVALUE
也会导致单元格A1
= "Till_Date" 出现#VALUE
错误 - 最右边的 2 = "te" - 在您的
MAX(NUMBERVALUE(Sheet1!A:A))
中,NUMBERVALUE
将导致A1:A7
中每个单元格出现#VALUE
错误,因为所有单元格都是文本。所以MAX
也是#VALUE
错误。
问题1可以通过计算“/”的位置并取其后的数字来解决。
问题2和3只有排除错误才能解决。但是 IFERROR
在 SUMPRODUCT
生成的矩阵上下文中不起作用。为此,需要一个真正的数组公式。
所以也许
{=SUM(IF(IFERROR(--RIGHT(Sheet1!A:A,LEN(Sheet1!A:A)-FIND("/",Sheet1!A:A)),0)=MAX(IFERROR(--RIGHT(Sheet1!A:A,LEN(Sheet1!A:A)-FIND("/",Sheet1!A:A)),0)),IF(Sheet1!AG:AG=A9,Sheet1!AA:AA)))}
会为你工作。
这是一个数组公式。将其输入到没有大括号的单元格中,然后按 [Ctrl]+[Shift]+[Enter] 确认。大括号将自动出现。
使用整个 Sheet1!A:A
范围,这将是非常糟糕的表现。所以你应该缩小范围。 Sheet1!$A:$A000
例如。与 Sheet1!$AG:$AG000
和 Sheet1!$AA:$AA000
.