查找每组中的前几名数据

这是个筛选与排名结合的问题,但似乎已成为Excel 中经常讨论的话题,下面我们来看几种解决方案并比较他们的不同。

1、查找每组中的第一名数据

这个问题有多种答案,可以通过函数,透视表解决,也可以通过SQL解决。我们用一张订单表为例,这张表中包括货主地区,货主城市,货主名称和运货费四个字段,企业想在该数据表中按货主地区提取每组中的最大运货费

订单数据源

函数:先对数据按货主地区排序,再按运货费排序,创建一个排名列,作用显示每个地区的每条记录的名次,函数:countif($a$1:a1,a1),最后筛选每组中的第一名,缺点是如果想查每组中最小的一条记录就不太容易

透视表:在2007以上的版本中透视表包含筛选:值最大的10项功能,我们可以利用这个来查找每组中最大一名记录,也可以查找每组中最小一名记录,功能仅限于此,如果想在所有地区查看前3名数据,并且只有该地区大于3条订单记录的数据才可以显示,透视表自身就无能为力了

订单数据透视表

用Excel的ODBC数据源引用SQL语句:

select 货主地区,货主城市,货主名称,运货费 from [Sheet1$]
where 运货费 in (
select max(运货费) from [Sheet1$]
group by 货主地区
)这种语句结构可以适合很多场合

继续。。。