学习Excel技术,关注微信公众号:
excelperfect
在《Excel公式技巧54:在多个工作表中查找最大值最小值》中,我们在MAX/MIN函数中使用多工作表引用来获取最大值/最小值。在《Excel公式技巧55:查找并获取最大值最小值所在的工作表》中,我们更进一步,获取最大值/最小值所在的工作表名称。本文来讲解如何利用公式获取最大值/最小值在哪个单元格。
示例工作表数据如下图1所示,我们可以使用MAX/MIN函数获取工作表数据的最大值/最小值,并且由于数据较少,可以清楚地看出最大值所在的单元格为B2,最小值位于单元格A2。
图1
可以使用ADDRESS函数来获取单元格地址,但关键是要传递给该函数合适的行列参数。在单元格D7中输入公式:
=ADDRESS(INDEX(ROW(A1:A4),SUMPRODUCT((A1:D4=C7)*(ROW(A1:D4)))),INDEX(COLUMN(A1:D1),SUMPRODUCT((A1:D4=C7)*(COLUMN(A1:D4)))),1,1)
得到最大值所在的单元格地址:
B2
公式中:
ROW(A1:A4)
解析为:
{1;2;3;4}
ROW(A1:D4)
解析为:
{1,1,1,1;2,2,2,2;3,3,3,3;4,4,4,4}
COLUMN(A1:D1)
解析为:
{1,2,3,4}
COLUMN(A1:D4)
解析为:
{1,2,3,4;1,2,3,4;1,2,3,4;1,2,3,4}
A1:D4=C7
解析为:
{FALSE,FALSE,FALSE,FALSE;FALSE,TRUE,FALSE,FALSE;FALSE,FALSE,FALSE,FALSE;FALSE,FALSE,FALSE,FALSE}
将上述中间数组代入:
SUMPRODUCT((A1:D4=C7)*(ROW(A1:D4)))
得到:
SUMPRODUCT({FALSE,FALSE,FALSE,FALSE;FALSE,TRUE,FALSE,FALSE;FALSE,FALSE,FALSE,FALSE;FALSE,FALSE,FALSE,FALSE}*{1,1,1,1;2,2,2,2;3,3,3,3;4,4,4,4})
得到:
SUMPRODUCT({0,0,0,0;0,2,0,0;0,0,0,0;0,0,0,0})
结果为:
2
代入第一个INDEX函数中得到:
INDEX(ROW(A1:A4),2)
转换为:
INDEX({1;2;3;4},2)
得到:
2
同样,第二个INDEX函数的结果为2,代入ADDRESS函数得到:
ADDRESS(2,2,1,1)
结果为:
B2
同理,在单元格D8中输入公式:
=ADDRESS(INDEX(ROW(A1:A4),SUMPRODUCT((A1:D4=C8)*(ROW(A1:D4)))),INDEX(COLUMN(A1:D1),SUMPRODUCT((A1:D4=C8)*(COLUMN(A1:D4)))),1,1)
得到结果:
A2
最终结果如下图2所示。
图2
欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。
欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料。