从问题的描述来看,这类似于一个从多个表格按条件动态查询数据并汇总到一起的应用。涉及到的关键知识点有两个:
1、多表数据汇总
2、多条件的查询(如果数据都在一个表里,高级筛选功能可以实现类似功能)
在以前,有很多人会开发一些VBA程序去解决这个问题。现在,如果是Excel2010以后的用户,可以用Power Query去解决。
具体实现方式参考如下:
原创 大海 Excel到PowerBI
小勤:现在公司有很多数据是分在多个Excel工作簿或工作表里的,能不能设一些动态的查询条件,然后自己输入条件,就提取符合条件的数据到一张表里啊?比如这样:
大海:嗯,这有点儿像一个操作系统的查询功能了。呵呵。小勤:是的。如果能做到这样子以后查数据就太方便了。
大海:你想啊,咱们如果将查询条件放到PQ里,然后在PQ里对数据合并的基础上,去动态引用查询条件,不就可以实现了吗?
小勤:对啊,上次你就实现了动态获取工作簿名称的用法(详见文章《结合CELL函数实现数据源的动态化》),看来这有希望了。
大海:当然啊。咱们这次先看个最简单的,然后一步步增加多种查询条件的实现难度。
小勤:嗯,那先告诉我一个条件的吧,比如先实现按货品代码提取的。
大海:好的。咱们还是先新建查询把要合并的数据在PQ中合并到一起,这个操作步骤就不写了,忘记了的话可以看我关于PQ批量汇总工作表数据的文章。
然后咱们把查询条件的表格以仅创建连接的方式添加到PQ中:
Step-01:新建查询
Step-02:将新建的查询命名为“查询条件”,方便后面的调用
Step-03:针对合并数据查询做一下筛选,以便生成一个筛选步骤的语句:
这个时候我们看一下【高级编辑器】里的情况,生成了一个筛选所有“A-1”的货品的步骤:
我们只要修改其中的“A-1”为对查询条件的动态引用就可以了,修改后代码如下:
搞定了,这样咱们就可以按自己写的条件查询了。你去试试?
小勤:嗯。真好用。
原创 大海 Excel到PowerBI
小勤:大海,我给货品加了个模糊查询,但好像有点问题啊,使用的时候会出错,你看:大海:咦,怎么报这个错?我看看你改的查询条件情况。小勤:不就是在高级编辑器里将筛选的条件改成用函数Text.Contains(),用来判断是否包含查询条件里输入的内容就可以了吗?你看,我这样改的:大海:进PQ里看看是什么错误?小勤:啊,里面果然报错了:大海:嗯。原来是数值转换的问题,当你输入的是数字的时候就出错了。你这样,在用Text.Contains函数之前先用Text.From函数把查询条件统一转为文本就可以了:小勤:啊!原来这样……但为什么报无法从数据库中提取数据的错误呢?大海:在Excel里显示结果时,通常只是反应能不能取到数据的简单错误,当出错的时候,你就可以进入到PQ里,从后往前一个步骤一个步骤地往回看详细的报错信息,这样才更容易定位到错误发生的地方和错误的原因。小勤:嗯,知道了。
联系客服