一对多查询,万金油公式

  该文节选自office365Excel3.3.18版本《函数宝典》电子版INDEX函数第11例

  

  解赋解析:

  IFERROR 如果公式的计算结果为错误,则返回您指定的值;否则将返回公式的结果

  INDEX 返回行和列交差位置的单元格引用或值

  SMALL 计算从小开始指定位置的数值

  IF 根据条件满足与否返回不同的值

  ROW 返回行序号

  COLUMN 返回序列号

  公式有点长,化繁为简,层层扒开学习.

  先从index说起,这个函数基本功能是给出一个区域,然后根据对应的行列位置返回查找结果,

  

  INDEX这里需要三个参数,第一个参数是数据范围(红线部分),第三个参数是要查找的内容位于这个范围的第几列,本例中因为要对应查找三列数据,并且列的位置是对应的,所以用到column函数(黄线部分),

  这两点都理解之后,重点学学INDEX的第二参数,这个参数的作用是要查找的内容位于数据区域的第几行,如果是一对一的查找,我们可以指定行号或者用MATCH函数来取得行号,但这里是一对多,例如学号6,分别对应三个行号,

  重要提醒:请注意,INDEX第一参数所给到的区域并不是从第一行开始的,而是从第二行开始,这一点很重要!

  实际上,这三个数据在INDEX给到的范围中,分别位于对应行,分析到这一步,似乎有点眉目了,我们希望的结果或许应该是这样的:对于输入的对应学号,

  第一次出现时应该是INDEX(数据范围,3,列位置);

  第二次出现时应该是INDEX(数据范围,对应行,列位置);

  第三次出现时应该是INDEX9数据范围,对应行,列位置);

  如果还有第四次出现的话,也至是第二参数(行位置)在变化.

  以上这段话请务必理解,因为这就是一对多的核心思路,为了将这一想法变成结果,就出来了small+if+row,而这三个函数的组合实际上才是真正的万金油!

  接下来是核心点……

  SMALL函数:这个函数的作用是在给出的一组数据中挑出指定的第几个最小值,第一个参数是一组数字,第二个参数是一个数字……

  small 的第一个参数是一组数字,第二个参数是1个数字,这是代表区域列这组数据中最小的一个,结果是1

  如果把第二参数改成2,意思就是这组中中第二小的数据,结果是2;

  第二参数改成3,结果还是2(因为有好几个2)

  注意,这里的第二参数是需要自动递进的,因为如果是输入数值,把第一个公式下拉的话,第二参数1是不会变的,如果需要第二参数会自己生成递进,就需要借助ROW函数!

  

  按F9生成这一数组,可以看出对应的值在哪个位置

  

  这句的意思就是学号是否等于我们给到的学号,如果是,得到ROW($1:$30),

  否则都等于99,(现在应该明白这个99的作用了吧,本例中99可以改成大于30的任何值),

  当然如果数据比较多,99就不够用,所以很多时候会用2007以上版本的最大行1048576,

  看上去很长不好记,于是大家都使用2^10来代替这个数(2^10是2的10次方),更简单的还有用8^8,9^9来写的,作用都一样,只要是一个够大的数.

  举报/反馈