题目及解法一均来自于网络。

题目:如下图所示的工作表,在单元格区域A1:A7中有一组数据,如何使用公式获取该区域中最长内容的单元格数据?即单元格A2包含的文本“Excel日记”。

解法一:
思路:先求出单元格区域中每个单元格中数据的长度,然后查找最长的长度所在的单元格位置,最后根据该位置获取相应单元格的值。
公式:=INDEX(A1:A7,MATCH(MAX(LEN(A1:A7)),LEN(A1:A7),0)) ,记得输入完后按 Ctrl+Shift+Enter 键。
效果:
解析:
LEN(A1:A7) 获取单元格区域 A1:A7 中各单元格数据的长度,即{2;4;7;3;7;4;6}。
MAX(LEN(A1:A7)) 获取长度值中的最大值,即 7。
因此,公式中的:
MATCH(MAX(LEN(A1:A7)),LEN(A1:A7),0)变为:MATCH(7,{2;4;7;3;7;4;6},0)其结果为 3。
将该值代入 INDEX 函数,即公式变成:INDEX(A1:A7,3),得到单元格 A3 中的值。
注意:如果最大长度不只一个时,只显示第一个。
PS:关于数组函数,大家可以参考我之前的文章【Excel数组及扩展,以及if(「1,0」……)的深度理解】
解法二:
思路:使用offset进行偏移定位
公式:=OFFSET(A1,MATCH(MAX(LEN(A1:A7)),LEN(A1:A7),0)-1,0),记得输入完后按 Ctrl+Shift+Enter 键。
效果:
解析:MATCH(MAX(LEN(A1:A7)),LEN(A1:A7),0)取到最大长度的文本在第三行,结果为3
相对于A1来讲需要下移两个单位,3-1=2,这样的话,就取得了相对于A1的相对位置,使用offset进行偏移就OK了,即=OFFSET(A1,2,0)