今天讲的是查找两个相同数字所最近的行数,这个问题相对偏一点,但碰到的话,这里可以帮助到你。下面以例子开讲了。 一、问题描述:在A列找到与最后一个数“2”相同且最近的数,得到这两个数字“2”所在单元格相距多少行。
二、问题解答:=IFERROR(SUM(LARGE(IF(A1:A16=A16,ROW(A1:A16)),{1,2})*{1,-1}),"")PS:数组公式最外面的大括号{…}并不是手动加上去的,是输入完公式后不要按Enter或者Tab键切换单元格,要同时按下Ctrl+Shift+Enter(按此顺序依次按下不要放手,最后一起放)。(类似操作及说明仅在第一次出现时注明) 三、步骤解析 第一步:IF(A1:A16=A16,ROW(A1:A16)),判断区域A1:A16中哪些与A16单元格内容相同,相同的返回行号,不同则返回FALSE(此处忽略了IF函数的第三参数)。本次计算得到结果为:{FALSE;FALSE;3;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;13;FALSE;FALSE;16} PS:数组不同行之间用“;”隔开,一行中用“,”隔开,这里得到一个一列16行的数组,见上图。 第二步:LARGE(IF(…),{1,2}),取出上一步得到的数组中的最大值和次大值,其实就是得到最后两个等于A16的值“2”的单元格的行号。本次计算结果为:{16,13}。 第三步:SUM(LARGE(…)*{1,-1}) → SUM({16,13}*{1,-1}) → SUM({16,-13}) → 3PS:请看下图
在SUM函数中直接将单元格区域相乘得到的结果是错误,而按三键结束确可以计算结果,不要问我为什么! 第四步:IFERROR(SUM(…),””),防错,如果上一步结果错误(#N/A!,#VALUE!等等)则返回空值,否则返回原值,在Excel中通常用“”””(两个英文状态输入的双引号)代表空值。 以上个人算法,如有更简单易懂的方法,欢迎留言;