在工作表多行多列的区域中查找目标值的位置

iamlaosong文

工作表的一个区域中有很多值,我们很容易用min或者max函数找出这个区域的最小值或者最大值,但是,要确定这个值的位置就比较难了,因为match函数或者vlookup(或者hlookup)函数都是对单行或者单列进行操作的。要确定这个值的位置,需要用到数组公式,我们看下面的数组公式:

 {=ADDRESS(
          MAX(IF(A1:R18=MIN(A1:R18),ROW(A1:R18))),
          MAX(IF(A1:R18=MIN(A1:R18),COLUMN(A1:R18)))) }
这个公式返回 A1:R18这个区域内最小值的位置,返回的结果可能类似这样:$H$4,就是这个最小值所在的单元格。下面分析一下这个公式的含义:

最外层的address函数是把行列值转换为单元格地址的一般表示方式,address(4,8)=$H$4,所以,公式中的两个max函数返回的是最小值所在位置的最大行号和最大列号,其中if函数就是判断区域内每个单元格是否等于最小值,相等就返回行号或者列号,否则返回false,逐一比较的结果是返回多个值(区域中有多少个单元格就返回多少个值),然后max含返回其中最大的,当然也可以用min函数返回最小的。

上面的公式稍作分解,就可以返回行号:

{=MAX(IF(A1:R18=MIN(A1:R18),ROW(A1:R18)))}

或者返回列号

{=MAX(IF(A1:R18=MIN(A1:R18),COLUMN(A1:R18)))}


所谓的数组公式,就是指定范围内的多个数据逐一进行计算,然后在这些结果中挑选(比如max)或者合成(比如sum)为一个结果返回;或者事先选择多个单元格然后输入数组公式,最后返回多个结果保存在这些单元格中。

最后,数组公式在输入后,要以Ctrl+Shift+Enter来结束公式,这样结束的数组公式看起来比普通公式外面多一组{},也就是花式大括号。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值