使用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!
答案 0 :(得分:0)
这会起作用吗?
INDEX(sysdata,,MATCH(MAX(sysdata),sysdata,FALSE)-1)
匹配返回列号,添加或删除1以获取任一侧的单元格值。
对于评论不起作用,图像显示工作表,系统数据范围为D2:L2。
答案 1 :(得分:0)
如果数据在列中,您可以使用:
=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)
如果数据在单个2d范围内,则公式略有不同:
识别最大数量的单元格:
=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}
并说根据是否与TRUE
匹配,将其转换为FALSE
和MAX
的数组:
{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
,ROW数组为:
{2,3,4,5}
列数组是:
{2,3,4}
截图: