想象一下这个场景,我们的数据有一部分侥幸能进入数据库了。但是这部分数据没有标记出,那我们只有通过数据库中的数据来查看excel表中的数据是否进入了数据库。因为是乱序的,所以不好一个个对,这便是查找存在
再比如,我们有一列需要处理的数据。但是有部分别人已经帮我们处理完了。现在我们需要知道有哪些需要处理。还是一样的乱序,因此我们需要查找缺失的部分。缺失的部分就是未处理的
上面两个例子本质上是一样的,因为找到了存在也就找到了缺失,找到了缺失也就找到了存在。
使用sql语言的表链接可以做到,但是我试出了excel的快捷方法,就是vlookup的隐藏用法。但是我不懂原理哈哈,反正能用,也不会出错。
查找存在
第一张表是本校的全部学生,第二张表是本次活动实到的学生。我们想在第一张表中标记出本校学生有参加本次活动的学生,也就是查找存在这个需求了。
sql实现
先用表链接来实现以下,想知道第一张表中的人名在第二张表是否出现过。那么只需用第一张表作为主表,来左连接第二张表。通过姓名链接,有出现过的那就能连上。这时候只需使用where的条件筛选把存在null的记录删去即可。代码如下:
只需把姓名(1)这一列的null值去掉即可,他们就是说本校学生未去参加活动的学生
excel实现
在excel中,使用vlookup函数来查找存在
第一次试出来这个用法我调试了好几次。之前被思维定势了,以为vlookup函数的第三个参数序列书必须大于等2(一般都是主列在最左边)。
那我解释下现在这个函数。就是说查找A2单元格这个值,有没有在H列中。如果有,匹配出来的就还是“晨晨”。如果没有,那就是找不到,匹配出来的值是N#A
第一次弄出来以后我太激动了,发现了vlookup的隐藏用法
然后,用筛选器把没匹配出来的去掉
结果和sql实现一样。
查找缺失
现在看右边这张表,我们现在想知道参加本次活动的有哪些学校不是本校学生。萧峰、张无忌和独孤求败哈哈哈哈。
翻译过来就是右表中哪些姓名,左表中未出现。查找缺失
sql实现
启动数据库,把右表作为主表,左连接左表,这样。存在于左表中的姓名就会连接上,不存在的就会出现null值
这次相反,这次我们要把姓名(1)这一列中的null值给取出来。因为我们要查找的是缺失的姓名(外校学生的姓名)而不是查找存在(本校学生的姓名)
结果就是这仨武侠高手哈哈
excel实现
跟刚刚一样,通过查找H2这个单元格在A列是否存在。如果存在就会直接把名字匹配出来,如果不存在,就会出现N#A
因为是查找缺失,所以把#N/A筛选出来
和上面sql实现一样