昨天在群里丢了一个关于一对多搜索的问题。虽然关于搜索的话题从来没有停止过,但是在工作中也是常有的事,尤其是像人力资源这样的部门。我们来看看问题。原始数据如下:

根据需要提供的身份证号找到同一账号所有人的详细信息。

(注:案例纯属虚构,取自某教材)

第一种:微软365的新功能过滤器

看标题很明显,肯定是365用户,而Filter的中文翻译就是筛选的意思,对于这种筛选问题用它肯定没错。我们将所有结果写在底部:

公式是:

= FILTER($ A $ 2:F $ 14,$ E $ 2:E $ 14 = VLOOKUP($ H $ 2,$ C $ 2:E $ 14,3,0),\”\”)

只要把公式写在一个单元格里,剩下的就会自动带出来,非常快速高效。

第二:固定函数组合索引+小+IF+行

关于这个经典的功能组合,分享的时候应该会提到几次,原理就不多说了。你只需要记得应用它。

=Index(要取值的范围,Small(if(取值条件,row(数据源中的行数),9 9),row (a1))

在上面的公式中,只需要注意取值范围、取值条件和数据源行数。让我们来看看如何设置它们。

公式是:

=index($a:$a,small(if(vlookup($h,$c:$e,3,0)=$e:$e,row(:),9^9),row(a1)))

取值范围是:A2:A14,因为你想得到名字;

取值条件:因为身份证是唯一的,如果以身份证作为搜索条件,那么必然只能得到一个数据。所以这里用Vlookup进行转换,找出身份证对应的账号,然后根据账号找到所有信息。所以这里的取值条件应该是账号;

数据来源的行数:从赵翼到刘四的最后一行,一共13行,所以用Row(1:13)。

以上完成后只需拖拽鼠标填充公式即可。

对于这种错误的引用,直接在外面设置一个IFERROR就可以了。公式似乎很复杂。其实总结规律,作为我们高中学的固定公式来应用就好了。

第三:幂查询转换(难点)

有兴趣的话可以试试。这位需要进一步了解M函数的朋友可以操作一下。在编辑字段中直接输入:

代码是:

=表。AddColumn(来源,“自定义”,每个表。SelectRows(账户信息,(y)=>y[账号]=表格。SelectRows(账户信息,(x)=>x[身份证号]=[请输入身份证号])[账号]{0}))

最后,展开数据后,关闭上传,就可以一劳永逸的刷新了。

需要理解上述内容:

桌子。选择行

(x)=>x

表的先前嵌套关系

如果你有更好的想法,请分享给我们,共同进步。

最近记录了幂查询的历程,从基础到高级。希望一系列教程可以帮助你提高。毕竟接口的操作只能发挥全部能力的20%,其他80%的能力还得靠M函数来实现。

如果你愿意继续学习,可以点击下面的直达课程链接,后续会有相关介绍。

发表评论

后才能评论