在没有 VBA 的情况下将矩阵提升到功率

Ped*_*tos 6 worksheet-function microsoft-excel

我需要将矩阵提升到一个很大的幂(比如 200),并且我不能使用 VBA,因为它适用于 IT 不允许运行宏的最终用户。

此外,由于幂很大,所以写一个非常大的公式是不够的,比如:

=MMULT(m,MMULT(m,MMULT(m..... )))
Run Code Online (Sandbox Code Playgroud)

其中 m 是我的矩阵的范围。

有没有办法在不求助于 VBA 的情况下做到这一点?

我环顾四周,到目前为止似乎答案是否定的。

Mát*_*ász 4

你可以通过迭代计算来完成

  • 选中复选框:文件 - 选项 - 公式 - “启用迭代计算”(从 Excel 2007 版本开始)
  • 将“最大迭代”值设置为足够大的数字(这是可以提高矩阵的最大功率)

在此输入图像描述

  • 辅助单元中的公式:
    =IF(ISNUMBER(G2),IF(G2=E2,TEXT(G2,"0"),G2+1),IF(VALUE(G2)=E2,G2,1))
  • 结果矩阵中的公式:(
    =IF(ISNUMBER(G2),IF(G2=1,A2:C4,MMULT(A2:C4,H2:J4)),H2:J4)
    这是一个数组公式,需要用CTRL+SHIFT+ENTER完成)

笔记

  • 仅当您更改功率时才会重新计算公式,仅更改输入矩阵后不会重新计算,也不会在重新计算所有公式时重新计算(可以完成,但需要更复杂的公式和更多辅助单元格,如果您是,请告诉我有兴趣)。
  • 另外,输入两个公式后,输出矩阵将仅显示 0 值,要计算它,您需要更改幂,从此工作表将“初始化”,它将正常工作
  • 公式中尚未实现错误检查:
    • 如果 power > 最大迭代次数,则公式将仅运行迭代集的次数
    • 类似地,对于非整数或负数,公式不会停止,而是运行直到最大迭代次数
    • 达到最大迭代次数后,公式将“溢出”,向前计数而不从 0 开始,要解决此问题,请设置下一个迭代周期将达到的幂(例如,如果 helper = 500,最大迭代次数 = 100,则设置 500 < power < 600,因此公式将正确地停在那里,并且它将在下一个功率设置中正常工作)。
  • 如有必要,上述大多数问题都可以在公式中解决。

更新

这个问题的回答 更详细地描述了公式的工作原理。