【发布时间】:2017-09-26 21:06:59
【问题描述】:
我有三个数组 A、B 和 A - B = C。它们被分成列并在 excel 中格式化,如:
A, B, C, A, B, C, A, B, C... D, E
我想对所有 C>0 = D 求和,并且对所有 C
我的解决方案:
根据here 和here 给出的方法的变体,以及一个简单的数据测试数组:
1 0 1 1
1 1 0 1
-1 -1 -1 1
0 -1 -1 0
-1 -1 1 0
1 1 0 1
我将取出偶数列并进行条件求和:
=SUMPRODUCT((MOD(COLUMN(A1:D1),2)=0)*(A1:D1>0),A1:D1)
=SUMPRODUCT((MOD(COLUMN(A1:D1),2)=0)*(A1:D1<0),A1:D1)
这会产生正确的结果:
1 0
2 0
1 -1
0 -1
0 -1
2 0
但我对为什么这行得通感到非常困惑。一方面,我没有输入双重否定 (--),所以在获得“TRUE”或“FALSE”值时,公式应该向我吐出错误。另一方面,即使我没有在 excel 中将它作为 CSE 数组函数运行,它也可以正常工作。而我最不了解的部分是SUMPRODUCT() 的论点。
MOD() 只是充当条件的过滤器,我得到了,但我不明白它如何处理 A1:D1 当它从 COLUMN 获得的只是一个数字时。 COLUMN(A1:D1) 只返回 excel 中的单个标量值,即范围中的第一列,在本例中为 1。如何将其转换为所需的数组 [1, 3],尤其是因为我没有使用 CSE?
【问题讨论】:
-
公式选项卡 > 评估公式support.office.com/en-us/article/…
标签: arrays excel sum range conditional