加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

【软件】在Excel中实现按条件查询数据(1)

(2010-06-02 11:51:40)
标签:

excel

按条件查询

报表

定制

公式

offset

automate

interactive

report

it

分类: BI:EXCEL

1 常用设计方法

在Excel中,实现按自定义条件查询业务数据,有几个常用思路:

1)VBA代码

2)筛选

3)公式

我一直持有这个观点,如果Excel本身的功能可以满足业务需求的实现,能不采用VBA代码设计,最好不用。例如这个场景,运用Excel公式对数据的计算、处理能力,同样可以实现数据的查询。筛选尽管是Excel的功能,但是结果是隐藏/显示记录的形式,定制方面有点欠缺。

 

2 示例:设计一个按条件数据查询的示例。

1)设计两个下拉框,类别与产品,用来选条件,实现思路,请阅上博。

http://s15/middle/62c0483cg880449b8b6be&690
2)选择饮料类的全部产品,即刻显示全部饮料的各项KPI(关键性能指标值)。
http://s3/middle/62c0483cg88044a1ece52&690

3)选择饮料类的具体某个产品,显示该产品(例如:浓缩咖啡)的各项KPI。
http://s11/middle/62c0483cg88044a7aeb3a&690

3 基本思路

在数据显示区,列出符合条件的产品结果集是最为重要。我们以列出某类全部产品为例,解析所运用的公式,考虑:

1)符合条件的第一条记录,例如:饮料类的第一个产品是什么。

2)符合条件的记录有几条,例如:饮料类的产品有几个。

3)如何控制行记录的显示,例如:如何将饮料的产品逐一列出。

 

关键步骤:

1)创建源数据DATA

http://s2/middle/62c0483cg88057052d4d1&690

2)在数据显示区,对符合条件的结果添加辅助列(A列),辅助列的第一行默认为0。除第一行外,辅助列的第N行根据第N-1行+1递增。至于递增到第几行,由符合条件的记录数控制。

例如:在图一中

A4 = 0

A5 =IF(AND($A4<COUNTIF(CategoryColumn,Category),ProductName = "全部"),$A4+1,"")

A5公式的大意是若上一行的数值小于所选类别(一级下拉框)的个数,且选择全部产品(二级下拉框),则基于上一行的数值+1, 否则为空白。

对A5以后的单元格复制A5公式。

 

2)在数据显示区,运用下列公式查找出符合条件的第一条记录,例如:源数据中饮料类中的第一个产品“凯牌矿泉水”,

B4 = OFFSET(CategoryStart, MATCH(Category,CategoryColumn,0)-1 + $A4, 1,1,1)

公式大意是从源数据“类别”标题开始,偏移单元格,找出饮料类的第一个产品。向下的偏移量由辅助列控制($A4)。

 

3)Excel的查找类公式,例如:Match,Vlookup等,如果在源数据中查找不到待查找的结果,会返回“#N/A”的错误。因此,对B4单元格改进为:

B4 = IF(ISERROR(OFFSET(CategoryStart, MATCH(Category,CategoryColumn,0)-1 + $A4, 1,1,1)),"",OFFSET(CategoryStart, MATCH(Category,CategoryColumn,0)-1 + $A4, 1,1,1))

主要加了iserror()公式,控制查找不到的错误。

对B4以后的单元格,复制B4公式。饮料类的产品显示,非饮料类的产品不显示。

图一

http://s2/middle/62c0483cg88066f273f31&690

4)显示了符合条件的产品结果集之后,运用vlookup公式,将其各项KPI结果显示出来。

 

4 补充说明

1)运用Offset公式时,要求数据源是排好序的(Sorted),这里要求源数据是按(类别、产品)关键字排序。

2)这个示例,主要说明了在Excel中如何运用公式控制符合条件的行记录,对符合列条件的控制(例如:各项KPI的显示控制),我们也可以进一步展开。 

 

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有