Excel 投资组合优化和矩阵乘法的MMULT没有给我正确的答案

Excel 投资组合优化和矩阵乘法的MMULT没有给我正确的答案,excel,excel-formula,Excel,Excel Formula,我在Excel中有两个向量要执行矩阵多应用: 我想计算投资组合回报率,应该是(30%*3%)+(20%*2%)+(50%*1%)=1.8% 我执行了MMULT(转置(A2:C2),A5:C5),它给了我0.60%。我做错什么了吗???我想你需要的是产品,而不是结果 =SUMPRODUCT(A2:C2, A4:C4) 我认为你需要的是产品,而不是结果 =SUMPRODUCT(A2:C2, A4:C4) 我同意@Jeeped的回答,这里使用SUMPRODUCT更好 只需提供更多信息: MMUL

我在Excel中有两个向量要执行矩阵多应用:

我想计算投资组合回报率,应该是(30%*3%)+(20%*2%)+(50%*1%)=1.8%


我执行了MMULT(转置(A2:C2),A5:C5),它给了我0.60%。我做错什么了吗???

我想你需要的是产品,而不是结果

=SUMPRODUCT(A2:C2, A4:C4)

我认为你需要的是产品,而不是结果

=SUMPRODUCT(A2:C2, A4:C4)

我同意@Jeeped的回答,这里使用
SUMPRODUCT
更好

只需提供更多信息:

MMULT(转置(A2:C2),A5:C5)
在数学上执行以下操作:

[0.3]                            [0.009  0.006  0.003]
[0.2]  *  [0.03  0.02  0.01]  =  [0.006  0.004  0.002]
[0.5]                            [0.015  0.010  0.005]
                    [0.03]
[0.3  0.2  0.5]  *  [0.02]  =  [0.018]
                    [0.01]
通常,如果公式返回数组,则单元格中仅显示最左上方列中的值。(在这种情况下,它将是
0.9%
,因为
0.009
的格式是百分比)

但是,在这种情况下,只有将公式作为数组公式输入时才会返回
0.9%
(按Ctrl+Shift+Enter键,而不是按Enter键)。我发现
TRANSPOSE
作为非数组公式的一部分时,其行为非常奇怪,这解释了为什么您看到
0.6%
的结果不正确

当然,这个矩阵结果根本不是你想要的,因为你只想要一个结果。实际上,
TRANSPOSE
必须位于
MMULT
的第二个参数中,而不是第一个参数中

MMULT(A2:C2,转置(A5:C5))
以数学方式执行以下操作:

[0.3]                            [0.009  0.006  0.003]
[0.2]  *  [0.03  0.02  0.01]  =  [0.006  0.004  0.002]
[0.5]                            [0.015  0.010  0.005]
                    [0.03]
[0.3  0.2  0.5]  *  [0.02]  =  [0.018]
                    [0.01]
这就是你想要的


同样,为了实际得到这个结果,您必须输入
MMULT(A2:C2,转置(A5:C5))
作为数组公式。

我同意@Jeeped的回答,即
SUMPRODUCT
在这里使用更好

只需提供更多信息:

MMULT(转置(A2:C2),A5:C5)
在数学上执行以下操作:

[0.3]                            [0.009  0.006  0.003]
[0.2]  *  [0.03  0.02  0.01]  =  [0.006  0.004  0.002]
[0.5]                            [0.015  0.010  0.005]
                    [0.03]
[0.3  0.2  0.5]  *  [0.02]  =  [0.018]
                    [0.01]
通常,如果公式返回数组,则单元格中仅显示最左上方列中的值。(在这种情况下,它将是
0.9%
,因为
0.009
的格式是百分比)

但是,在这种情况下,只有将公式作为数组公式输入时才会返回
0.9%
(按Ctrl+Shift+Enter键,而不是按Enter键)。我发现
TRANSPOSE
作为非数组公式的一部分时,其行为非常奇怪,这解释了为什么您看到
0.6%
的结果不正确

当然,这个矩阵结果根本不是你想要的,因为你只想要一个结果。实际上,
TRANSPOSE
必须位于
MMULT
的第二个参数中,而不是第一个参数中

MMULT(A2:C2,转置(A5:C5))
以数学方式执行以下操作:

[0.3]                            [0.009  0.006  0.003]
[0.2]  *  [0.03  0.02  0.01]  =  [0.006  0.004  0.002]
[0.5]                            [0.015  0.010  0.005]
                    [0.03]
[0.3  0.2  0.5]  *  [0.02]  =  [0.018]
                    [0.01]
这就是你想要的


同样,为了实际得到这个结果,您必须输入
MMULT(A2:C2,转置(A5:C5))
作为数组公式。

是否可以使用MMULT?这不是相同的数学运算。通过公式、公式审核、计算公式查看差异。有趣的是,MMULT只会给出列B中引用的结果。因此,它不仅是错误的数学,而且调用了隐式求交@如果将公式作为数组公式输入,则无论公式位于何处,chrisneilsen
MMULT
都将给出相同的结果。您在不同位置看到公式的不同结果的原因是因为
转置
,如果公式不是作为数组公式输入的,我发现它的行为非常奇怪(而且不正确)。@不,我从来没有说过OP使用数组公式时的任何内容(正如您回答的那样),它返回一个数组。由于隐式相交位于源的第二列,OP得到了向量=0.6%的最高结果。所有这些都与Q无关,只是解释一下OP为什么会得到答案。转置的行为是完全可预测的。是否可以使用MMULT进行转置?这不是相同的数学运算。通过公式、公式审核、计算公式查看差异。有趣的是,MMULT只会给出列B中引用的结果。因此,它不仅是错误的数学,而且调用了隐式求交@如果将公式作为数组公式输入,则无论公式位于何处,chrisneilsen
MMULT
都将给出相同的结果。您在不同位置看到公式的不同结果的原因是因为
转置
,如果公式不是作为数组公式输入的,我发现它的行为非常奇怪(而且不正确)。@不,我从来没有说过OP使用数组公式时的任何内容(正如您回答的那样),它返回一个数组。由于隐式相交位于源的第二列,OP得到了向量=0.6%的最高结果。所有这些都与Q无关,只是解释一下OP为什么会得到答案。转置的行为是完整的predictable@JunJang不客气。请接受其中一个正确答案。@JunJang不客气。请接受其中一个正确答案。