您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
excel如何在一列数字中查找出第一个大于某数的位置?
行号,函数,问题excel如何在一列数字中查找出第一个大于某数的位置?
发布时间:2020-12-06加入收藏来源:互联网点击:
问题补充:
条件
1.一列数字,比如A1:A50中,随机包含50个数字,有正有负,无序排列,也有重复的数值,比如A3=16,A14=16;
2.参照对标的目标值,比如B1=25
要求
在A1到A50中,找出第一个(最后一个)等于/大于/小于B1的数值的行数
找了很多数组函数教学,好像都没有解决,望高手赐教,谢谢。
回答于 2019-09-11 08:43:50
回答于 2019-09-11 08:43:50
我来回答你这个问题吧,虽然不能获得流量加持。。
我分析了一下你的提问,发现有以下几个问题需要解决:
问题一:如何存放一组数与一个数进行比较的返回值
问题二:你需要最终的结果是返回对应的行数,这就需要获取对应的行数
问题三:找出第一个符合条件的数
好了,找到了问题,我们只需要一一地解决问题就行了,我想到了两种方法:一种是用辅助列的方法,一种是用数组的方法。
辅助列法:
顾名思义,我们需要一列辅助列来存放计算过程中得到的数据,如下图:
我们在辅助列的B1单元格里输入公式:=IF(A1>$C$1,ROW(A1),""),后向下填充。
因为用了辅助列,很轻易地就搞定了问题一,接着用ROW函数的返回值作为IF函数的返回值搞定了问题二,现在就只剩下问题三了。
※ 需要注意的是,作为比较条件的C1单元格一定要用绝对引用,即写成$C$1或者$C1。
问题三就更简单了,分析问题三后可知,我们需要第一个符合条件的数所在行的行号,也就是说这个行号在所有符合条件的行号中肯定就是最小的嘛。所以,我们可以用MIN函数来搞定,如下图:
在D1单元格里输入公式:=MIN(B1:B20),获取辅助列中的最小值即可。
怎么样,是不是很简单。
数组法
如果你不喜欢在源数据表里插入辅助列,那我们还可以使用数组的方法来解决这个问题。
从上面的方法中,我们发现只要解决了IF函数返回值的存放问题,就可以不需要辅助列了,这就需要用到数组了,看下图:
我们直接在D1单元格里输入公式:=MIN(IF(A1:A20>C1,ROW(A1:A20),""))后使用Ctrl + Shift + Enter 的组合键结束输入,最终在编辑栏里显示的效果是这样的:{=MIN(IF(A1:A20>C1,ROW(A1:A20),""))},整个公式是被一对花括号包起来的。
在这个公式中,我们仍然是用的IF、ROW、MIN这三个函数,我们来一步一步地解析一下这个公式:
首先是IF函数,我们把A1:A20>C1作为IF函数的第一参数,这样就可以一次性的把A1:A20与C1比较后的返回值作为一个数组存放在内存中。
然后用ROW(A1:A20)一次性获取所有的行号。
这样嵌套后,如果A1:A20与C1的比较值为TRUE则返回ROW(A1:A20)对应的行号,否则返回空值。
这样IF函数得到的返回结果其实就是辅助列法中的B1:B20的值,但是在这里这个结果是存放在内存中的。
最后我们再把这个结果作为参数嵌套进MIN函数中,就可以得到我们想要的结果了。
我是Excel大白,希望我的回答对你有所帮助。。
点个关注,获取更多Excel小技巧。。。
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |