论文部分内容阅读
实际工作中,我们经常会涉及条件查询的问题,在创建公式时,可以借助LOOKuP、FREQuENCY函数实现,这里举两个例子进行介绍:
实例1:利用LOOKUP函数实现区间查询
例如图1所示的工作表,A1:B6区域是一张成绩评价标准表,小于60不及格,大于等于60小于80为及格,大于等于80小于90为良好…,依此类推。现在需要在G列对某位同学的成绩进行评判。
选择G2单元格,在编辑栏输入公式“=L00KuP(F2,A$2:B$5)”,LOOKuP函数的查询思路是“LOOKuP(查找值,查找区域)”,注意查找区域的首列必须按照升序排列,本例的查询区域是A$2:B$5,公式执行之后向下拖曳或双击填充柄,很快就可以得到如图2所示的评判结果。
实例2:利用FREQUENCY函数实现接近查询
如图3所示,数据与例一相仿,但评判标准有变化,要求查找最接近的值,然后得出评判结果。此时我们需要利用FREQuENCY函数实现接近查询的要求,在G2单元格输入如下公式:=LOOKuP(1,0/FREQUENCY(O,ABS(A$2:A$6-F2)),B$2:B$6)
上述公式的“ABS(A$2:A$6-F2)”部分,可以计算得出A2:A6区域和F2之间差的绝对值(正數和零),得到一个内存数组:{13;3;2;12;17);FREQuENCY函数以ABS函数的计算结果为分段区间,对0进行计频,由于FREQuENCY函数只在分段点首次出现时统计频数,且统计小于等于此分段点、大于上一分段点的频数,所以0所返回的计频位置,总是处于最接近0的那个分段点。本例中这个分段点是2,计数为1,其余分段点,计数为0,计算之后依然得到一个内存数组:{0;0;1;0;0;0)。
最后再利用LOOKUP进行查询,“O/FREQUENCY(0,ABS(A$2:A$6-F2))”构建一个由O和错误值#DIV/O!组成的数组,再用永远大于0的1作为LOOKUP的查找值,即可快速得出O所对应的目标区域结果,此处的LOOKUP目标区域为B$2:B$6,因此得分13,返回15所对应的B4的值C。
需要指出的是,FREQUENCY函数支持分段区间乱序,所以并不需要得分区域必须升序排列,最终结果如图4所示。
实例1:利用LOOKUP函数实现区间查询
例如图1所示的工作表,A1:B6区域是一张成绩评价标准表,小于60不及格,大于等于60小于80为及格,大于等于80小于90为良好…,依此类推。现在需要在G列对某位同学的成绩进行评判。
选择G2单元格,在编辑栏输入公式“=L00KuP(F2,A$2:B$5)”,LOOKuP函数的查询思路是“LOOKuP(查找值,查找区域)”,注意查找区域的首列必须按照升序排列,本例的查询区域是A$2:B$5,公式执行之后向下拖曳或双击填充柄,很快就可以得到如图2所示的评判结果。
实例2:利用FREQUENCY函数实现接近查询
如图3所示,数据与例一相仿,但评判标准有变化,要求查找最接近的值,然后得出评判结果。此时我们需要利用FREQuENCY函数实现接近查询的要求,在G2单元格输入如下公式:=LOOKuP(1,0/FREQUENCY(O,ABS(A$2:A$6-F2)),B$2:B$6)
上述公式的“ABS(A$2:A$6-F2)”部分,可以计算得出A2:A6区域和F2之间差的绝对值(正數和零),得到一个内存数组:{13;3;2;12;17);FREQuENCY函数以ABS函数的计算结果为分段区间,对0进行计频,由于FREQuENCY函数只在分段点首次出现时统计频数,且统计小于等于此分段点、大于上一分段点的频数,所以0所返回的计频位置,总是处于最接近0的那个分段点。本例中这个分段点是2,计数为1,其余分段点,计数为0,计算之后依然得到一个内存数组:{0;0;1;0;0;0)。
最后再利用LOOKUP进行查询,“O/FREQUENCY(0,ABS(A$2:A$6-F2))”构建一个由O和错误值#DIV/O!组成的数组,再用永远大于0的1作为LOOKUP的查找值,即可快速得出O所对应的目标区域结果,此处的LOOKUP目标区域为B$2:B$6,因此得分13,返回15所对应的B4的值C。
需要指出的是,FREQUENCY函数支持分段区间乱序,所以并不需要得分区域必须升序排列,最终结果如图4所示。