如果查找列未知,则查找数组最大值的单元格位置

Find the cell location of the maximum value of an array if the lookup column is uknown

我正在尝试获取 excel 电子表格(见下文)中最大值的位置。

Date    Tommy   Jamie   Clara
01/2013 1.51%   -6.96%  0.38%
02/2013 1.75%   -6.96%  -0.49%
03/2013 2.22%   -6.96%  0.59%
04/2013 1.90%   -5.48%  -1.16%
05/2013 2.03%   -5.48%  0.23%
06/2013 1.90%   -5.48%  -0.47%
07/2013 2.51%   -0.90%  -0.65%
08/2013 3.06%   -0.90%  1.54%

然而,这种情况下的问题是行号和列号均未知。到目前为止,我已经尝试了以下方法:

=CELL("address",INDEX($B:$D, MATCH(MAX($B:$D),$B:$D,0),3))

但意识到 MATCH 函数将只接受一个列,因此此处 MATCH 函数的第二个参数会产生错误。同样,INDEX 函数的第三个参数(写为“3”)也是错误的——因为我不知道数组的最大值在哪一列。

我尝试了各种方法但无济于事。很乐意在这方面得到任何帮助。

您可以使用INDEX/AGGREGATE:

=CELL("address";INDEX($A:$D; AGGREGATE(14;6;(ROW($B:$D)/(MAX($B:$D)=$B:$D));1);AGGREGATE(14;6;(COLUMN($B:$D)/(MAX($B:$D)=$B:$D));1)))

解释:

我假设你熟悉CELL和INDEX函数,所以我只解释AGGREGATE部分。

AGGREGATE(14,6,(ROW($B:$D)/(MAX($B:$D)=$B:$D)),1)

第一个参数 (14) 表示将使用 LARGE 子函数。

第二个参数(6)表示错误将被忽略。

第三个参数创建一个行数值数组。

第四个参数 (1) 指出第一个最大值应该 returned。

我将向您展示如何按以下步骤创建行号数组:

  1. ROW(B2:D9) returns 一个数组,所有行号都在范围内:
2,2,2;
3,3,3;
4,4,4;
...
9,9,9
  1. MAX($B:$D)=$B:$D returns 一个布尔数组:
FALSE, FALSE, FALSE;
FALSE, FALSE, FALSE;
FALSE, FALSE, FALSE;
...
TRUE, FALSE, FALSE
  1. 相互除法,bool值转换为FALSE = 0,TRUE = 1,得到数组:
  #DIV/0!, #DIV/0!, #DIV/0!;
  #DIV/0!, #DIV/0!, #DIV/0!;
  #DIV/0!, #DIV/0!, #DIV/0!;
 ...
  9, #DIV/0!, #DIV/0!
  1. 错误被忽略,结果我们得到 9

列类推

如果范围内有几个相同的MAX值,那么这个公式就不行了——可以用下面的数组公式代替:

=ADDRESS(INT(MIN(IF($B:$D=MAX($B:$D),ROW($B:$D)*1000+COLUMN($B:$D)))/1000),MOD(MIN(IF($B:$D=MAX($B:$D),ROW($B:$D)*1000+COLUMN($B:$D))),1000),4)

它将return地址的第一个MAX值。

编辑后的数组公式按ctrl+shift+enter

确认