在尝试系统地列举掷出四个相同但已装载的四面骰子时出现的可能性时,我发现了一些不寻常的 Excel 行为。希望有人能解释一下幕后发生了什么。
下表说明了模具可能扮演的角色:
1000 一
0100 乙
0010 盧夫
0001 天
每一行都代表一种具有不同概率的可能性。
在尝试显示这种骰子的四个角色的所有可能组合时(第一个组合可能是 A + A + A + A 或 4000,第二个可能是 3100,依此类推),我决定系统地将四个角色的 A 偏移 0、1、2 或 3 行,然后对结果求和。但奇怪的是,我得到了以下结果。(所有公式都是使用 shift+ctrl+enter 输入的数组公式)。
=TRANSPOSE( SUM( OFFSET( A, 4x1ArrayOfRowOffsets, 0)))
当输入 1x4 范围时,显示正确的总和。同样,如果=TRANSPOSE(...)
被替换为=INDEX(...,1,1)
。我认为这是因为这两个函数本身都支持数组参数。然而,
=SUM( OFFSET( A, 4x1ArrayOfRowOffsets, 0))
不起作用——似乎这里的求和是沿着偏移量返回的 4 行进行的,每行都有值 1。奇怪的是,
=SUM( TRANSPOSE( OFFSET( A, 4x1ArrayOfRowOffsets, 0)))
也不起作用——转置使得求和能够沿着偏移量返回的列正确进行,但似乎会丢弃除第一列之外的所有列。交织 INDEX 调用并不能解决问题。
为了尝试了解发生了什么,我进行了进一步调查。
=INDEX( OFFSET( A, {w;x;y;z}, 0), 1, {1,2,3,4})
正确显示进入 4x4 范围时的四次掷骰结果。此外,
=COLUMNS( OFFSET( A, {w;x;y;z}, 0))
当输入 5x5 范围时返回以下内容:
4 4 4 4 4
4 4 4 4 4
4 4 4 4 4
4 4 4 4 4
n/a n/a n/a n/a
也就是说,SUM(OFFSET(---))
使用数组参数进行调用似乎会产生不同的输出,具体取决于执行调用的内容。这是为什么?这里到底发生了什么?