| A |B |C| D |E| F | G | H | I |J| K | L | M |
------|-------|--|-|------|-|--------|------|------|------|-|---------|----------|----------|--
1 | | | |ratio | | tested | 2023 | 2024 | 2025 | | RowCrit | ColCrit1 | ColCrit2 |
2 |Brand A|P1| | 7% | | yes | 500 | 70 | 60 | | 2024 | Brand A | P1 |
3 |Brand A|P2| | 8% | | yes | 100 | 47 | 300 | | | Brand D | P4 |
4 |Brand A|P2| | 10% | | yes | 800 | 21 | 200 | | | | |
5 |Brand B|P1| | 5% | | yes | 90 | 56 | 150 | | | | |
6 |Brand C|P4| | 3% | | no | 45 | 700 | 790 | | | | |
7 |Brand C|P2| | 8% | | no | 600 | 150 | 40 | | Result | 191.5 | |
8 |Brand D|P1| | 12% | | yes | 900 | 90 | 980 | | | | |
9 |Brand D|P1| | 20% | | yes | 125 | 854 | 726 | | | | |
10|Brand D|P3| | 19% | | yes | 70 | 860 | 614 | | | | |
11|Brand D|P4| | 2% | | yes | 842 | 250 | 85 | | | | |
12|Brand E|P4| | 6% | | no | 300 | 324 | 450 | | | | |
我想SUMPRODUCT
通过将 中的值Column D
与 中的相应值相乘来计算Column G:I
。
该SUMPRODUCT
公式还应考虑Row
inCell K2
和Column
inRange L2:L4
和 的过滤器Range M2:M4
。
在上面的例子中,结果是:
L7 = 7%x70 + 12%x90 + 20%x854 + 2%x250 = 191.5
参考这个问题的答案,我尝试应用这个解决方案:
=LET(
a, IF(
COUNTA($L$2:$L$3) = 0,
N(ISNUMBER(ROW($A$2:$A$12))),
COUNTIF($L$2:$L$3, $A$2:$A$12)
),
b, IF(
COUNTA($M$2:$M$3) = 0,
N(ISNUMBER(ROW($B$2:$B$12))),
COUNTIF($M$2:$M$3, $B$2:$B$12)
),
c, CHOOSECOLS($A$2:$I$12, 3, XMATCH($K$2, $A$1:$I$1)),
SUM(a * b * CHOOSECOLS(c, 1) * CHOOSECOLS(c, 2))
)
但是,它会返回0
结果。据我所知,这是由空引起的Column C
。
我假设在这个公式中Column D
必须将其声明为固定列才能用于SUMPRODUCT
.
您知道如何更改公式以使其发挥作用吗?
改变:
到:
或者:
这对我来说有效,而不是对列位置进行硬编码
XMATCH()
以使其动态化:• 使用
BYROW()
:• 或者不使用
LAMBDA()
助手:LAMBDA()
顺便说一句,您也可以使用这个自定义公式:但是,如果列始终固定,您可以删除
XMATCH()
该ratio
列的 并对其进行硬编码。column_index
4
根据OP的评论:
最终更新的公式:
或者,