Excel SUMIF/SUMIFS 的总和,具有动态多个条件
Excel SUM of SUMIF/SUMIFS with dynamic multiple criteria
我需要通过单元格引用传递一个多条件列表(一个常量数组),而不是将其硬键入到我的公式中。
所以,而不是这个:
=SUM(SUMIFS(sum_range,criteria_range,{"red","blue"}))
但我需要使用这个:
=SUM(SUMIFS(sum_range,criteria_range,$A1))
其中 $A1 是 {"red","blue"}
我知道可以使用一系列单元格来传递数组,但我确实需要我的条件来自单个单元格。
似乎通过单元格引用传递常量数组只会将第一个元素传递给公式(即仅 "red" 用作条件),我能找到的所有工作示例(here or here)都是将条件硬输入到公式中。
有人运气好吗?
编辑:我应该补充一点,我的数据集包含空白行,所以它不是连续的,一般来说,我正在寻找一个不太复杂的解决方案,它在大多数情况下都可以工作,并且限制和注意事项很少尽可能。
将A1中的"Array"改为逗号分隔的列表:
blue,purple
没有引号或{}
将 SUM 更改为 SUMPRODUCT 并将其用作条件:
TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",99)),(ROW(INDEX(AAA:AAA,1):INDEX(AAA:AAA,LEN(A1)-LEN(SUBSTITUTE(A1,",",""))+1))-1)*99+1,99))
</code> 应该放在尽可能多的选项中。我只是在这里用它作为占位符,它可以更多没有问题但不能更少或者它会跳过更多。</p>
<p><a href="https://i.stack.imgur.com/UmYqm.png" rel="nofollow noreferrer"><WBIMG:8792505-1.png></a></p>
<hr>
<p>基于您提供的公式。</p>
<pre><code>=SUMPRODUCT(SUMIFS(W:W8,$I:$I8,$I474,$J:$J8,$J474,$K:$K8,TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",99)),(ROW(INDEX(AAA:AAA,1):INDEX(AAA:AAA,LEN(A1)-LEN(SUBSTITUTE(A1,",",""))+1))-1)*99+1,99))))
单元格 A1 包含 {"red","blue"}
然后我设置一个命名范围 Condition
我分配给 =EVALUATE($A1)
现在我可以像这样传递我的条件:
=SUM(SUMIFS(W:W8,$I:$I8,$I474,$J:$J8,$J474,$K:$K8,Condition))
我需要通过单元格引用传递一个多条件列表(一个常量数组),而不是将其硬键入到我的公式中。
所以,而不是这个:
=SUM(SUMIFS(sum_range,criteria_range,{"red","blue"}))
但我需要使用这个:
=SUM(SUMIFS(sum_range,criteria_range,$A1))
其中 $A1 是 {"red","blue"}
我知道可以使用一系列单元格来传递数组,但我确实需要我的条件来自单个单元格。
似乎通过单元格引用传递常量数组只会将第一个元素传递给公式(即仅 "red" 用作条件),我能找到的所有工作示例(here or here)都是将条件硬输入到公式中。
有人运气好吗?
编辑:我应该补充一点,我的数据集包含空白行,所以它不是连续的,一般来说,我正在寻找一个不太复杂的解决方案,它在大多数情况下都可以工作,并且限制和注意事项很少尽可能。
将A1中的"Array"改为逗号分隔的列表:
blue,purple
没有引号或{}
将 SUM 更改为 SUMPRODUCT 并将其用作条件:
TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",99)),(ROW(INDEX(AAA:AAA,1):INDEX(AAA:AAA,LEN(A1)-LEN(SUBSTITUTE(A1,",",""))+1))-1)*99+1,99))
</code> 应该放在尽可能多的选项中。我只是在这里用它作为占位符,它可以更多没有问题但不能更少或者它会跳过更多。</p>
<p><a href="https://i.stack.imgur.com/UmYqm.png" rel="nofollow noreferrer"><WBIMG:8792505-1.png></a></p>
<hr>
<p>基于您提供的公式。</p>
<pre><code>=SUMPRODUCT(SUMIFS(W:W8,$I:$I8,$I474,$J:$J8,$J474,$K:$K8,TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",99)),(ROW(INDEX(AAA:AAA,1):INDEX(AAA:AAA,LEN(A1)-LEN(SUBSTITUTE(A1,",",""))+1))-1)*99+1,99))))
单元格 A1 包含 {"red","blue"}
然后我设置一个命名范围 Condition
我分配给 =EVALUATE($A1)
现在我可以像这样传递我的条件:
=SUM(SUMIFS(W:W8,$I:$I8,$I474,$J:$J8,$J474,$K:$K8,Condition))