在非单元格引用的 Excel 数组的每一行或每一列中查找最大值

Find maximum value in each row or column of an Excel array that is not a cell reference

我需要在 LET 调用中找到数组中一列的最大值,该列不是使用一个单元格的单元格引用。

This 适用于作为单元格引用的数组,但是当我尝试在不是单元格引用的数组上使用它时,它会失败。

比如使用这个数据。

12  2  3
 3  7  5
 7  8  9

=LET(Rng,$A:$C,SUBTOTAL(4,OFFSET(INDEX(Rng,1,1),,COLUMN(Rng)-MIN(COLUMN(Rng)),ROWS(Rng)))) returns [12, 8, 9] 正如你所期望的,但是 =LET(Rng,$A:$C*1,SUBTOTAL(4,OFFSET(INDEX(Rng,1,1),,COLUMN(Rng)-MIN(COLUMN(Rng)),ROWS(Rng)))) returns #VALUE

这可以在单个单元格中完成还是我必须使用多个单元格?

编辑: 期望的输出是

12  8  9

我有一个适用于绑定到单元格的数组的公式,我没有适用于不绑定到单元格的数组的公式,例如 LET

编辑 2: 最终我需要一些适用于 36x36 阵列的东西。

好的,这是一个很长的阶段,而且非常具有实验性。我觉得可能有更好的方法。为了使下面的工作正常,我使用了 ARRAYTOTEXT() 函数,我认为它只对有权访问 Microsoft365 的内部人员程序的用户可用。尽管如此,这是我的尝试:

E1中的公式:

=LET(X,ARRAYTOTEXT(TRANSPOSE(A1:C3),1),TRANSPOSE(FILTERXML("<y><t><s>"&SUBSTITUTE(SUBSTITUTE(MID(X,2,LEN(X)-2),",","</s><s>"),";","</s></t><t><s>")&"</s></t></y>","//s[not(.< preceding-sibling::*)][not(.<= following-sibling::*)]")))

您可以通过将 A1:C3 引用替换为 RANDARRAY(4,4,1,100,1)

之类的内容来测试数组的工作情况

这是使用更传统的索引和排序的替代方法:

=LET(sa,SEQUENCE(9,1,0),sb,SEQUENCE(1,3,3,3),col,INDEX(A1:C3,MOD(sa,3)+1,QUOTIENT(sa,3)+1),
sortcol,SORTBY(col,QUOTIENT(sa,3),1,col,1),INDEX(sortcol,sb))

想法是将二维数组转换为一维数组 (col),然后先按原始数组中的列号排序,然后按数组中的值排序。最后从结果数组中每隔三个元素提取一次。这分别显示了步骤:

这是总体结果:

我忘了问题的重点是它应该适用于数组和范围:

=LET(sa,SEQUENCE(9,1,0),sb,SEQUENCE(1,3,3,3),col,INDEX(A1:C3*1,MOD(sa,3)+1,QUOTIENT(sa,3)+1),
sortcol,SORTBY(col,QUOTIENT(sa,3),1,col,1),INDEX(sortcol,sb))

=LET(sa,SEQUENCE(9,1,0),sb,SEQUENCE(1,3,3,3),col,INDEX(RANDARRAY(3,3),MOD(sa,3)+1,QUOTIENT(sa,3)+1),
sortcol,SORTBY(col,QUOTIENT(sa,3),1,col,1),INDEX(sortcol,sb))

矩形数组最大列的一般形式(例如 4 行乘 3 列)

=LET(arr,A1:C4*1,r,ROWS(arr),c,COLUMNS(arr),sa,SEQUENCE(r*c,1,0),sb,SEQUENCE(1,c,r,r),col,
INDEX(arr,MOD(sa,r)+1,QUOTIENT(sa,r)+1),sortcol,SORTBY(col,QUOTIENT(sa,r),1,col,1),INDEX(sortcol,sb))

对于 min,只需更改排序顺序:

=LET(arr,A1:C4*1,r,ROWS(arr),c,COLUMNS(arr),sa,SEQUENCE(r*c,1,0),sb,SEQUENCE(1,c,r,r),col,
INDEX(arr,MOD(sa,r)+1,QUOTIENT(sa,r)+1),sortcol,SORTBY(col,QUOTIENT(sa,r),1,col,-1),INDEX(sortcol,sb))

矩形数组最大行数的一般形式

=LET(arr,A1:C4*1,r,ROWS(arr),c,COLUMNS(arr),sa,SEQUENCE(r*c,1,0),sb,SEQUENCE(r,1,c,c),col,
INDEX(arr,QUOTIENT(sa,c)+1,MOD(sa,c)+1),sortcol,SORTBY(col,QUOTIENT(sa,c),1,col,1),INDEX(sortcol,sb))

再次为 min 更改排序顺序:

=LET(arr,A1:C4*1,r,ROWS(arr),c,COLUMNS(arr),sa,SEQUENCE(r*c,1,0),sb,SEQUENCE(r,1,c,c),col,
INDEX(arr,QUOTIENT(sa,c)+1,MOD(sa,c)+1),sortcol,SORTBY(col,QUOTIENT(sa,c),1,col,-1),INDEX(sortcol,sb))