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

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来结束公式,这样结束的数组公式看起来比普通公式外面多一组{},也就是花式大括号。

你可能感兴趣的:(在工作表多行多列的区域中查找目标值的位置)