假设我在单元格 F2 至 I5 中有一个如下数字矩阵:

a_1 a_2 a_3 a_4 x
b_1 b_2 b_3 b_4 y
c_1 c_2 c_3 c_4 z
d_1 d_2 d_3 d_4 w

假设我想解如下方程组

a_1 a_3 a_4 x
c_1 c_3 c_4 z
d_1 d_3 d_4 w

请注意,一旦我们消除第二行和第二列,第二个矩阵就是第一个矩阵。

MMULT我想使用和求解第二个矩阵给出的方程组MINVERSE。但是,MINVERSE不允许我从第一个矩阵中选择所需的值,因为它需要一个数组作为输入。

一种选择是手动从第一个矩阵中写出第二个矩阵并相应地求解。虽然这种方法可行,但似乎很麻烦。有没有办法使用MMULTMINVERSE求解第二个矩阵给出的方程组,而不必明确地写出它(即告诉MINVERSE从第一个矩阵中选择哪些单元格)。

我也尝试了排序功能,但是这会破坏电子表格中的许多公式,所以这不是一个选择。

所以我想我的问题是:如何反转特定的子矩阵?

2

  • 1
    你可以暂时将 设为b_2一个大数。或者,暂时将 的值加上一个大数b_2


    – 


  • 1
    谢谢你的评论。我想我可以,但我觉得使用CHOOSECOLS和的方法CHOOSEROWS相当优雅。


    – 



最佳答案
2

如果您有 Excel365,您可以组合CHOOSECOLSCHOOSEROWS函数来获得所需的结果。这些函数允许从给定的数组中分别选择列和行。

尝试:

=CHOOSECOLS(CHOOSEROWS(C4:G7,1,3,4),1,3,4,5)

或者

=CHOOSEROWS(CHOOSECOLS(C4:G7,1,3,4,5),1,3,4)

5

  • 谢谢你的回答。是否可以使用CHOOSECOLSANDCHOOSEROWS作为 的输入MINVERSE?我之所以问这个问题是因为我真的不需要看到我正在执行逆运算的矩阵。


    – 


  • 1
    @EoDmnFOr3q 据我所知,这应该是可能的。


    – 

  • 我正在尝试,但似乎无法……准确地说,我得到了一个值错误。还有其他帮助吗?


    – 


  • 1
    @EoDmnFOr3q 您的输入是数字吗?使用 MINVERSE 函数时,列数和行数应该相同。


    – 

  • 我得到了我需要的东西。非常感谢!


    – 

您可以更笼统地处理这个问题,并定义一个LAMBDA函数,该函数将返回一个具有给定数字的省略行和列的数组。我将给出这种函数定义的两种变体:

=LAMBDA(data,r,c, FILTER(FILTER(data, SEQUENCE(ROWS(data))<>r), SEQUENCE(,COLUMNS(data))<>c))
=LAMBDA(data,r,c, MAKEARRAY(ROWS(data)-1, COLUMNS(data)-1, LAMBDA(x,y, INDEX(data, IF(x<r,x,x+1), IF(y<c,y,y+1)))))

函数可以命名为 eg SUBMATRIX,并使用三个参数调用:数据范围、要删除的行号、要删除的列号。

此类函数的结果可以作为其他数组函数的参数。