从命名区域获取相对于另一个的单元格

使用MS Excel 2007.我使用命名的范围SysData

 =MAX(SysData) 

返回最大值。

如何将单元格中的值返回到此最大值的左侧和右侧?

我试图获取包含最大值的单元格的参考作为起点使用:

 =CELL("address",INDEX(SysData,MATCH(MAX(SysData),SysData,0))) 

但是这返回N / A。

以下是我的电子表格示例:

电子表格图像

SysData是B3:B5,B6的公式是max(SysData)

正如你所看到的 – 它没有工作我也尝试了替代公式

=ADDRESS(ROW(SysData)+INDEX(SysData,MAX(SysData))-1,COLUMN(SysData))

这也给#REF!

这将工作:

 INDEX(sysdata,,MATCH(MAX(sysdata),sysdata,FALSE)-1) 

该匹配返回列号,并且1被添加或移除以获得单元格的任一侧的值。

回应评论它不起作用,图像显示表格和sys数据的范围是D2:L2。

在这里输入图像说明

如果你的数据在一列中,你可以使用这个:

 =ADDRESS(ROW(SysData)+INDEX(SysData,MAX(SysData))-1,COLUMN(SysData)) 

而且,如果你的数据是连续的,你可以使用这个:

 =ADDRESS(ROW(SysData),COLUMN(SysData)+INDEX(SysData,MAX(SysData))-1) 

一旦你有了细胞,你可以使用OFFSETINDIRECT来获得一个相对于包含MAX的细胞。 例如,数据在一行中:

 =OFFSET(INDIRECT(ADDRESS(ROW(SysData),COLUMN(SysData)+INDEX(SysData,MAX(SysData))-1)),0,-1) 

在这里输入图像说明

编辑

如果你的数据是在一个单一的二维范围内,公式有点不同:

要识别最大数量的单元格:

 =ADDRESS( SUMPRODUCT(--(SysData=MAX(SysData))*ROW(SysData)), SUMPRODUCT(--(SysData=MAX(SysData))*COLUMN(SysData)) ) 

然后,为了获得一些抵消,你可以使用INDIRECTOFFSET进行相同的处理:

 =OFFSET( INDIRECT( ADDRESS( SUMPRODUCT(--(SysData=MAX(SysData))*ROW(SysData)), SUMPRODUCT(--(SysData=MAX(SysData))*COLUMN(SysData)) ) ), 0,-1) 

两个SUMPRODUCT公式基本上是看数据的数组,例如

{1,2,3; 4,5,6; 7,8,9; 0,10,0}

并说根据是否有一个匹配的MAX将其转换为TRUEFALSE数组例如:

{FALSE,FALSE,FALSE; FALSE,FALSE,FALSE; FALSE,FALSE,FALSE; FALSE,TRUE,FALSE}

然后双重一元运算符转换为01例如

{0,0,0; 0,0,0; 0,0,0; 0,1,0}

由于ROW(SysData)COLUMN(SysData)本身就是指定范围的绝对行和列引用的数组,因此将这些数组乘以0/1数组将返回MAX值的位置。

在我的例子下面的SysData数组是B2:D5和行数组是:

{2,3,4,5}

列数组是:

{2,3,4}

截图:

在这里输入图像说明