咔片PPT · AI自动生成演示文稿,模板丰富、排版精美 讯飞智文 · 一键生成PPT和Word,高效应对学习与办公

我是老王,每次都带给你好玩的Excel实例,这次也不例外。

问题场景是这样的(当然我经过了简化处理)。

某小区现场发送家庭必备材料,有不少住户是现场领取的,以下就是现场领取住户的清单。

现在小区居委要确认还有哪些住户是没有领取的,然后再打电话通知或者上门配送巴拉巴拉的。

所以现在需要看看有哪些住户没有领取。

当然这个小区的楼号数(1-10号),楼层数(1-11层),以及每个楼层的住户数(1-4室)是固定的。

所以这个问题应该怎么解决?

常规思路就是把所有的住户列出来,然后匹配刚才上面已领取的用户。所以现在的问题转化为如何将这个小区所有的住户地址列出来。

普通方法不好做的

因为这里其实要把10,11,4这3个数字组合成10*11*4=440个地址。是一个“数据膨胀”的问题。

所以我们还是请出来Power Query,看看这个工具如何实现“数据膨胀”。

第一步 创建一个表

这里做一个非常简单的表,然后加载到PQ。为什么做一个简单的表,其实是为了后续写公式方便,当然如果你能在PQ里直接写代码生成表大可跳过这一步。

第二步 添加自定义列

自定义列,新列名为“楼号”,自定义公式为={1..10}:

同理得到自定义列“楼层”和“门牌”:

第三步 展开数据

点击楼号列的扩展按钮(向左向右箭头的那个),然后点击扩展到新行,即可将List逐个展开。楼层和门牌列同样操作,这样就得到10*11*4=440条数据。

对展开后的列重新设置下格式,楼号、楼层和门牌均改为文本。在上面写自定义公式的时候,如果将{1..10}改成{"1".."10"},这里就不需要重新改为文本格式了,有兴趣的可以试一试,记得3个自定义公式都要改哦。

第四步 组合数据

将楼号、楼层和门牌组合成完整住址。这里也需要用到自定义列,看起来很长,其实就是文本的连接。

第五步 合并后筛选

现在只需要将所有住户与已领取住户匹配,筛选出没有领取的即可。当然首先需要将已领取的加载到PQ。

然后做合并查询,也就是类似于VLOOKUP函数的效果。

合并好之后,展开合并的Table列。

最后再筛选null,即为未领取的用户。

筛选得到253行,440-187=253,结果刚好一致。

总结一下

这种“数据膨胀”的问题,利用传统的Excel方法不太好解决,比如普通操作硬上、函数公式啊什么的,都不能很好处理。

当然利用VBA肯定也能处理,而且也不是很麻烦,不过很多人对写代码无比头痛,有兴趣的也可以试一试如何利用VBA来“膨胀”。

这里利用PQ是个不错的解决办法,而且不仅是将所有住户列出来,还可以直接在PQ里做数据匹配。还有个好处,如果不断增加已领取的住户,则可以实时更新未领取的住户,有兴趣的可以尝试下这个过程哦。

我是老王,这次,带给你一个实用的案例,不仅仅是这个具体的场景,更重要的是解决问题的思路。