从命名区域获取相对于另一个的单元格
使用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)
一旦你有了细胞,你可以使用OFFSET
和INDIRECT
来获得一个相对于包含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)) )
然后,为了获得一些抵消,你可以使用INDIRECT
和OFFSET
进行相同的处理:
=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
将其转换为TRUE
和FALSE
数组例如:
{FALSE,FALSE,FALSE; FALSE,FALSE,FALSE; FALSE,FALSE,FALSE; FALSE,TRUE,FALSE}
然后双重一元运算符转换为0
和1
例如
{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}
截图: